為啥我在Domain類里呼叫不了TestObject類里的max方法,而toString卻可以呢? 主函式new的TestObect物件呼叫max方法卻成功了,當成引數傳過去不行
Domain類--------------------------
public static<T> void fun5(T args){
String str = args.toString();
args.max(1,2);///////////////////不行
System.out.println(str);
}
public static void main(String[] args) {
TestObject testObject = new TestObject();
testObject.max(1,2);//////////////////////可以呼叫
fun5(testObject);
TestObject類---------------------------------
@Override
public String toString() {
return "TestObject{" +
"index=" + index +
", str='" + str + '\'' +
"------------"+
'}';
}
public int max(int a,int b){
return a > b? a : b;
}
uj5u.com熱心網友回復:
tostring 是object類的方法,object是所有類的父類,所以不管什么類都可以呼叫,max方法當然不可以,誰知道你args指的是那個類,
main中申明了是 TestObject 類,當然能呼叫其中的方法,這個都很基礎。
uj5u.com熱心網友回復:
T是泛型別,如果你需要使用TestObject中的方法需要把 args強制轉換為TestObject型別才能呼叫max方法,如果你args引數傳入的不是TestObject型別,下面的陳述句會報錯
(TestObject)args.max(1,2);
uj5u.com熱心網友回復:
這是泛型的用法,不對泛型進行說明的時候,默認就是Object,想要呼叫可以改為下面這個..public static<T extends TestObject> void fun5(T args){ ....
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/279458.html
標籤:Java相關
上一篇:救救孩子吧
