气煞我也之 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});
}
}
小白一只,欢迎指正。



