作者allstarschh (allstars)
看板java
标题[问题] generics的问题
时间Wed Apr 27 19:42:27 2011
我想要请问 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
1F:→ Chikei:type cast. 04/27 22:11
2F:→ uziel:没记错的话,Java 的 generics 必须使用参考型别 04/27 22:44
3F:推 zhengdavy:要把i cast成Integer type 04/28 05:13
4F:→ sbrhsieh:你 C++ template 版本也写得蛮糟的~~~ 04/28 12:53
5F:→ sbrhsieh:或许你根本不需要 template。 04/28 12:54
6F:→ sbrhsieh:尽管 Java Generics/C++ template 本来就是两回事。 04/28 12:56
7F:→ allstarschh:感谢 我只是想问generics要怎麽cast到fixed type 04/28 22:26
8F:→ allstarschh:我一直cast成int所以一直遇到error 04/28 22:28
9F:→ allstarschh:template是後来为了对照java才写的 所以比较杂一些 04/28 22:31
10F:推 tomap41017:s大说糟的原因是...? 04/29 13:23
11F:推 legnaleurc:看不出他template的目的在哪,呼叫的签名根本不需要泛型 04/29 16:00