请问如何实例化这个类public static class Test<E extends Test<E>>

问题描述

最近研究Java泛型,请问怎么创建这个类的实例:public static class Test<E extends Test<E>> {public E get (E e) {return e;}} 问题补充:不好意思,我这个类就是内部类,我试了下你的代码不行。我把这个类声明独立出来如下:public class Test<E extends Test<E>> {public E get (E e) {return e;}}以下声明没有问题,但不用?而用Test类的子类时子类如何声明?Test<?> test = null;

解决方案

即使你使用public class Test<E extends Test<E>> {public E get (E e) {return e;}} 那么他的子类最好轻便一些,照你这样可读性都不好,子类最好这样public class Test1 extends Test<Test1> {}直接Test<Test1> test=new Test<Test1>();声明就好,全部通过
解决方案二:
我感觉你这个除了用?没有其他方法了,当然在不放弃泛型的情况下!因为你这像是一个循环。其实我感觉这样定义public class Test<E extends Test<?>> {public E get (E e) {return e;}} 不错。这样就可以直接用Test<Test1> test=new Test<Test1>();初始化了。public class Test1 extends Test<Test1> {}
解决方案三:
引用测试了你的代码,不行 不是我的代码有问题,而是你给出了一个限定E extends Test<E>,我使用的E是String。你改为public class Warp{public static class Test<E> {public E get (E e) {return e;}} }Warp.Test t = new Warp.Test<String>();String a = t.get(new String("abc"));就行了,如果要E extends Test<E>。那么下面你要使用的类型必须为Test或Test的子类
解决方案四:
通常static修饰的是匿名内部类。上面的有完整写法为:public class Warp{public static class Test<E extends Test<E>> {public E get (E e) {return e;}} }那么调用方法是:Test t = new Warp.Test<String>();String a = t.get(new String("abc"));
解决方案五:
这个类不对,会报变异错误,去掉static 就好了。

时间: 2024-12-21 17:31:48

请问如何实例化这个类public static class Test&amp;lt;E extends Test&amp;lt;E&amp;gt;&amp;gt;的相关文章

java代码-java初学者提问 在类中 用static成员变量实例化自身类 程序的执行顺序过程是怎样的?

问题描述 java初学者提问 在类中 用static成员变量实例化自身类 程序的执行顺序过程是怎样的? class Demo03 { public static void main(String[] args) { A.show(); } } class A { //构造方法 A(){ System.out.println("构造方法执行"); System.out.println(b); System.out.println(c); } static A a=new A(); sta

设计一个只能在堆上或栈上实例化的类

一道C++笔试题:设计一个只能在堆内存上实例化的类和一个只能在栈内存上实例化的类 只能在堆内存上实例化的类:将析构函数定义为private,在栈上不能自动调用析构函数,只能手动调用.也可以将构造函数定义为private,但这样需要手动写一个函数实现对象的构造. 只能在栈内存上实例化的类:将函数operator new和operator delete定义为private,这样使用new操作符创建对象时候,无法调用operator new,delete销毁对象也无法调用operator delete

编程-java中在类定义里能实例化本类的对象吗?

问题描述 java中在类定义里能实例化本类的对象吗? 我在一本书上看到这个,这里的内容试讲java的构造方法私有化的 class Singleton { Singleton instance=new Singleton(); private Singleton() {} public void print() { System.out.println("Hello World"); } } 这个我想请教一下,为什么这里能在类定义里实例化本类的对象? 这里还列出了另一种方式: class

new-C#的主函数通过实例化后类,调用字段变量t.a;为什么出错,而调用字段函数可以??

问题描述 C#的主函数通过实例化后类,调用字段变量t.a;为什么出错,而调用字段函数可以?? C#的主函数通过实例化后类T t=new T();调用字段变量t.a;为什么出错,而调用字段函数可以?? class T{ int b: void fc() { Console.WriteLine("b:"+b); } static void main(String[] args) { T t=new T(); t.fc(); 这样正确,没报错 Console.WriteLine("

PHP类中Static方法效率测试代码

类的定义如下: 复制代码 代码如下: class test { public static function a(){} public function b(){} } $obj = new test; 比较以下几种情况 test::a(); $obj->a(); $obj->b(); 测试代码: 复制代码 代码如下: $obj = new test; $test_times = 100; $times = 10000; $effi1 = array(); $effi2 = array();

无法解析的外部符号 &quot;public: static void __cdecl std::_String_base::_Xran(void)&quot; (?_Xran@_String_base@std@@SAXXZ)&quot;

采用下面的方法.重新编译了一下依赖的库,OK了.   问题描述:       今天用VS2010编译一个在VS2008下Coding的工程的时候,VS给出了一堆链接错误信息,如下图所示:               在ErrorList里面列出了34个链接错误信息,但仔细看的话,其实很多都是重复的,只有两三个外部符号未正确解析,如下:       "public: static void __cdecl std::_String_base::_Xran(void)" (?_Xran@_

public static final String初始化问题

问题描述 public static final String初始化问题 public static final String CONF_RESOURCE = ("/spring/staticConstants.properties");为什么需要使用双括号,不是只需要使用双引号就可以了吗 解决方案 Java 中的小括号是用来限定逻辑运算的优先级或者方法参数定义的. 有时候为了代码易懂,逻辑运算以外的其他地方也使用它,没有啥具体意义,编译器不会报错. 解决方案二: static fin

面向对象 实例化方法 类

问题描述 面向对象 实例化方法 类 我有建多个表,连接数据库,现在想抽象php数据库连接公用类,按 数据库设计抽象php各对象,并实现实例化方法, 请问怎么下手"一表一类",谢谢大神了- 解决方案 php (十一) 面向对象 通过类实例化对象实例讲解面向对象的思维方法PHP5中面向对象类的创建和对象实例化 解决方案二: 建了一个shop数据库,里面建一张表order.然后用php写一个order类对应数据库中的order表.

修饰符-public static void main(String[] args)

问题描述 public static void main(String[] args) 本人初学者,public static void main(String[] args) 这句代码中的 修饰符及参数总是不理解,请大神解答.谢谢!!! 解决方案 public static void main(String[] args) public 这是一个公有的方法 static 这是一个静态的方法 void 没有返回值 main 方法名 String[] args,这是参数,程序运行的时候可以加上参数