问一个JAVA泛型问题
class Info<T>{private T var;
public T getVar() {
return var;
}
public void setVar(T var) {
this.var = var;
}
}
public class GenericsDemo13 {
public static void main(String[] args){
Info<String> i=new Info<String>();
i.setVar("AAAAA");
fun(i);
}
public static void fun(Info<?> temp){
System.out.println("内容:"+temp);
}
}
为什么这个结果打印出来是个地址,而不是AAA呢? --------------------编程问答--------------------
--------------------编程问答-------------------- 你得复写toString 不然打印的是对象 --------------------编程问答-------------------- 一个默认打印为Info的toString方法,Info没有覆盖那么就会调用Object的了
class Info<T> {
private T var;
public T getVar() {
return var;
}
public void setVar(T var) {
this.var = var;
}
public String toString(){
return var.toString();
}
}
--------------------编程问答--------------------
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
........ --------------------编程问答-------------------- 这和泛型一点关系都没有,别拿着泛型说事啊,害我发时间看你代码! --------------------编程问答-------------------- 看看也是有长进的 --------------------编程问答-------------------- “每一个基本类型的对象都有一个toString()方法,而且当编译器需要一个String而你却只有一个对象时,该方法就会被调用”
仔细品一品这句话,当你System.out.println(obj)的时候,其实隐式的调用了Obj.toString()方法。
--------------------编程问答-------------------- 我是菜鸟,说错了大家别骂我啊。你用的是自定义类。打印出来的temp是一个对象。怎么能打印出来AAA呢?因为temp是对象,所以打印出来的是个地址。想打印出值来得用temp.getVar()吧。。。。。 --------------------编程问答-------------------- 这个也可以,通过打印调用toString(),如何toString()方法返回var的值。。。。。 --------------------编程问答--------------------
我说嘛
补充:Java , Java SE