栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

气煞我也之 java - 接口不能给实现类赋予静态方法 QAQ

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

气煞我也之 java - 接口不能给实现类赋予静态方法 QAQ

气煞我也之 Java 第三篇!

时间:2022年3月24日
作者:返祖猿

无的参考文章


  今天想写一个属于自己的常用工具类,方便起见将类中所有方法全部定义为静态,其中涉及到了遍历输出数组。

  我不是在说 java.util.Arrays 不好用,只是实在觉得两边加个中括号不太美观,每次都被迫手写遍历。于是我转念一想,干脆写个工具类吧。

  先是写了个 Object[] 参数的方法,能咋省事就咋省事。

  结果到用的时候发现这玩意不适配基础数据类型的数组???

这可真是气煞我也!!!

  没办法了,只能手搓八个转换基本数据类型的方法╰(‵□′)╯

  八个方法实在太过臃肿,所以想着写个接口把方法绑过去算了。

  万万没想到!接口的 static 方法不能让它的实现类用!!!

  default 的方法也因为不是静态的,不能直接使用!!!

  真是绑了个寂寞!!!

这可真是气煞我也!!!

  也不是说不能用接口直接调用,但是多个接口不就得多记个接口嘛……

  最后还是把 interface 换成了 fianl class,给我的工具类上了个静态实例化。

  代码一长串可真是令人烦躁 {{{(>_<)}}}

public interface ChangeArrayType {
	// 不是静态方法,所以需要通过对象调用!!!
	default Byte[] changeArrayType(byte[] array) {
		Byte[] result = new Byte[array.length];
		for (int i = 0; i < array.length; i++) {
			result[i] = array[i];
		}
		return result;
	}

	// 静态方法,但是不给实现类用!!!
	static Short[] changeArrayType(short[] array) {
		Short[] result = new Short[array.length];
		for (int i = 0; i < array.length; i++) {
			result[i] = array[i];
		}
		return result;
	}

	// 真是离了个大谱!!!
}
public class CATImpl implements ChangeArrayType{}
public class TestCATImpl {
	public static void main(String[] args) {
		// 需要对象!!!
		error: CATImpl.changeArrayType(new byte[]{1});
		
		// 不能这么用!!!
		error: CATImpl.changeArrayType(new short[]{1});
		
		// 这么用也不行!!!
		ChangeArrayType change = new CATImpl();
		error: change.changeArrayType(new short[]{1});
		
		// 可以这么用!!!
		ChangeArrayType.changeArrayType(new short[]{1});
	}
}

小白一只,欢迎指正。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/777347.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号