在C#以下是有效的:爲什麼我們不能在非泛型類中使用泛型方法?
public class X {
public void F<T>(T t) {}
}
做:
var x = new X();
x.F(2);
而這不可能在Java中。
我知道泛型在兩種語言不同的工作,但我仍然不知道...
有一個很好的理由是什麼?
在C#以下是有效的:爲什麼我們不能在非泛型類中使用泛型方法?
public class X {
public void F<T>(T t) {}
}
做:
var x = new X();
x.F(2);
而這不可能在Java中。
我知道泛型在兩種語言不同的工作,但我仍然不知道...
有一個很好的理由是什麼?
的語法是不同的:
public class X {
public <T> void F(T t) {}
}
感謝您的回答。 @MattRS和@Kal也是正確的(也都是upvoted),但你是第一個:) –
謝謝。順便說一句,我認爲我們不應該鼓勵發佈已經存在的答案(和問題)。 –
同意。看到我前一段時間問的問題:http://meta.stackexchange.com/questions/43898/why-duplicate-an-answer –
只要你知道你可以在Java的非通用類中通用的方法。
它應該是這樣的 -
public class Test {
public <T> void func(T t) {
// do something.
}
}
當你調用它,test.func(2),2個被autoboxed成Integer對象
編輯:要回答你的問題,無論你問的是Java中完全可能的東西。
你可以,只是移動你的通用聲明。
public <T> void F(T t){}
我們可以。你的語法不正確,就這些。 – EJP