黑马程序员技术交流社区
标题:
高手解惑
[打印本页]
作者:
明天,你好
时间:
2013-5-11 22:26
标题:
高手解惑
本帖最后由 明天,你好 于 2013-5-15 17:36 编辑
public class Single<T>
{
public static T getSingleInstance()
{
if(singleInstance==null){
return singleInstance;
}
}
private static T singleInstance;
}
这段什么为什么错误?
作者:
fjl_fight
时间:
2013-5-11 22:53
由于是static它是随着编译后就要加载到JVM中,由于不知道保存的具体类型,jvm不知道怎么分配空间,故会报错
作者:
飞鸟青崖
时间:
2013-5-11 23:03
本帖最后由 飞鸟青崖 于 2013-5-11 23:13 编辑
第一,泛型只有用在类、接口、方法上,你那第二个是一个变量,不能用。也不是不能用,可以用类上的泛型。
第二,静态方法的泛型不能和类的一样,把静态方法上的泛型换一个字母就行了。
作者:
zms2100
时间:
2013-5-11 23:04
这个也太高难度了吧,没错误信息,也没有完整代码,稍微说下我个人观点的问题 :
1、public class Single<T> ; 除非你这个类是单独的在一个.java源程序,否则不要添加public;
2、public static T getSingleInstance() //因为这里(以及下面)的泛型 T 是跟类上的T指向同一个泛型,所以只有创建类对象的时候才能确定泛型,
{ //所以不能被static修饰; 静态修饰的泛型方法必须是 public static <T> T show(.....){ .... }
if(singleInstance==null){ // <T> 的意思是创建一个该方法特有的泛型 T ;(也就和类上的T , 不是同一个)
return singleInstance;
} // 3、 另外这里还要再加句return 返回语句,因为有不等于null的情况,那么你还是要返回值的。
}
作者:
仲伟
时间:
2013-5-11 23:13
public class Single<T>
{
private static T singleInstance ;
public static T getSingleInstance()
{
if(singleInstance==null){
return singleInstance;
}
}
}
放到这个位置,就行了,因为上面都没有初始化你,你就使用跟定报错
还有你要是写单例模式的话,你还缺少一个构造方法
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2