baidu_28379135
2015-06-09 06:43
采纳率: 100%
浏览 5.6k
已采纳

JAVA泛型类的初始化问题

有以下类定义:
public class Test> {
public Test(){
System.out.println("success");
}
}
请问各位如何创建实例?
PS:
Test> test=new Test>();
是不行的

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • threenewbee 2015-06-09 07:08
    已采纳
     /* package whatever; // don't place package name! */
    
    import java.util.*;
    import java.lang.*;
    import java.io.*;
    
    class Test<U,V extends Test<U,V>> {
        public Test(){
            System.out.println("success");
        }
    }
    
    class A extends Test<String, A>
    {
    
    }
    
    /* Name of the class has to be "Main" only if the class is public. */
    class Ideone
    {
        public static void main (String[] args) throws java.lang.Exception
        {
            // your code goes here
            Test<String, A> t = new Test<String, A>();
        }
    }
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • bdmh 2015-06-09 06:46
    评论
    解决 无用
    打赏 举报
  • danielinbiti 2015-06-09 06:48
     Test<String> test=new Test();
    
    评论
    解决 无用
    打赏 举报
  • threenewbee 2015-06-09 06:54

    这代码就算能编译,也没法执行,会引起无限递归。
    你可以说下它实际应用的场合,看看有没有别的语法代替。

    评论
    解决 无用
    打赏 举报
  • 另一花生 2015-06-09 07:00

    java中没法得到泛型参数化类型,因为在编译期没法确定泛型参数化类型,也就找不到对应的类字节码文件,自然就不行了
    泛型反射的关键是获取ParameterizedType,再调用它的getActualTypeArguments()方法获得实际绑定的类型。但注意public class BookManager是不能被反射的,因为擦拭法的缘故。只有在Superclass 或者成员变量(Field.getGenericType())等有函数返回ParameterizedType的时候才能成功反射

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题