当前位置:编程学习 > JAVA >>

问一个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呢? --------------------编程问答--------------------

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();
}
}
--------------------编程问答-------------------- 你得复写toString 不然打印的是对象 --------------------编程问答-------------------- 一个默认打印为Info的toString方法,Info没有覆盖那么就会调用Object的了

    public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
--------------------编程问答--------------------
引用 3 楼  的回复:
一个默认打印为Info的toString方法,Info没有覆盖那么就会调用Object的了
Java code

    public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }


........ --------------------编程问答-------------------- 这和泛型一点关系都没有,别拿着泛型说事啊,害我发时间看你代码! --------------------编程问答--------------------
引用 5 楼  的回复:
这和泛型一点关系都没有,别拿着泛型说事啊,害我发时间看你代码!
看看也是有长进的 --------------------编程问答-------------------- “每一个基本类型的对象都有一个toString()方法,而且当编译器需要一个String而你却只有一个对象时,该方法就会被调用”

仔细品一品这句话,当你System.out.println(obj)的时候,其实隐式的调用了Obj.toString()方法。
--------------------编程问答--------------------      我是菜鸟,说错了大家别骂我啊。你用的是自定义类。打印出来的temp是一个对象。怎么能打印出来AAA呢?因为temp是对象,所以打印出来的是个地址。想打印出值来得用temp.getVar()吧。。。。。 --------------------编程问答--------------------
引用 2 楼  的回复:
你得复写toString 不然打印的是对象
这个也可以,通过打印调用toString(),如何toString()方法返回var的值。。。。。 --------------------编程问答--------------------
引用 5 楼  的回复:
这和泛型一点关系都没有,别拿着泛型说事啊,害我发时间看你代码!

我说嘛
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,