我有点晕了。。。把重载和重写弄混了。。。看源代码发现print(xx) 里面的方法都是write(xx)实现的,只有object是调用它的toString()完成的。那么如果要像你那样使用泛型的话,应该这么用 :
//不记得写在
public (T)void print(T t) {
write(String.valueOf(t));或者write(t);
}
好像越搞越矛盾了,因为对一个里面有个char[]数组,如果传一个char[]数组进去,源代码是用write(t)方法的,但实际上char[]也可以看做是一个数组对象吧?但就算是调用write(String.valueOf(t))也能得到想要的,只是调用了new String(char[])变成了一个对象,不知道会先调用哪一个方法了,待会儿debug一下。
如果传进来的是一个object对象,那么按理说应该调用 write(String.valueOf(t))才对。那么确定下来了,应该改为public (T)void print(T t) {
write(String.valueOf(t));
}
不知道上面的有没有哪里说错了,边看代码边写的。。继续下面的分析
当使用String.valueOf(t)时候,发现String的valueOf方法也和out一个重载了很多方法,而且里面的实现有好几种,看到这里我晕了,因为要使用上面的用了泛型的方法,对String的valueOf方法有较大改动,我自己本人是没法改了= =。。
[ 本帖最后由 梁锡伟 于 2011-08-21 00:47 编辑 ] |