看板 java 關於我們 聯絡資訊
我想要請問 generic的問題 因為我發現跟c++有點不一樣 先說我的c++ template 主要就是template會去call一個固定type的function Test::func(int) 1 class Test { 2 public: 3 void func(int i) { } 4 }; 5 6 template<typename T> class temp { 7 public: 8 void func(T i) { 9 Test t; 10 t.func(i); 11 } 12 }; 13 14 int main() { 15 temp<int> t; 16 t.func(3); 17 return 0; 18 } 可是在java裡用generic就會有compile error 1 public class generics<T> { 2 public static void main(String args[]) { 3 new generics().fun(3); // error func(int) in Test cannot be applied to (T) 4 } 5 6 public void fun(T i) { 7 Test t = new Test(); 8 t.func(i); 9 } 10 } 11 12 class Test { 13 void func(int i) { } 14 } 15 看起來是java不會跟c++一樣產生出template instantiation的code 而直接把template的type當成Object 那我想請問的是 在我這java的例子裡 我該怎麼從template call 一般的function呢? ( i.e. Test.func(int) ) 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.22.63.249
Chikei:type cast. 04/27 22:11
uziel:沒記錯的話,Java 的 generics 必須使用參考型別 04/27 22:44
zhengdavy:要把i cast成Integer type 04/28 05:13
sbrhsieh:你 C++ template 版本也寫得蠻糟的~~~ 04/28 12:53
sbrhsieh:或許你根本不需要 template。 04/28 12:54
sbrhsieh:儘管 Java Generics/C++ template 本來就是兩回事。 04/28 12:56
allstarschh:感謝 我只是想問generics要怎麼cast到fixed type 04/28 22:26
allstarschh:我一直cast成int所以一直遇到error 04/28 22:28
allstarschh:template是後來為了對照java才寫的 所以比較雜一些 04/28 22:31
tomap41017:s大說糟的原因是...? 04/29 13:23
legnaleurc:看不出他template的目的在哪,呼叫的簽名根本不需要泛型 04/29 16:00