【发布时间】:2018-01-07 13:08:40
【问题描述】:
我正在研究 java 泛型类。创建一个以 T 作为类型参数的泛型类。
public class Genericstring<T> {
String name;
public void set(String name){
this.name = name;
}
public static void main(String[] args){
Genericstring<String> o = new Genericstring<String>();
o.set("Generic");
System.out.println(o.name);
}
}
在上面的例子中,T 的类型可以是字符串、整数或任何其他类型。但是有可能我可以创建具有特定类型参数的泛型类。像下面的例子,但它显示错误“无法对非静态类型字符串进行静态引用”
public class Genericstring<String> {
String name;
public static void main(String[] args){
//Here creating object always having string type attributes. No need to specify like did in above example.
}
谁能告诉我,是否可以使用 String 作为参数创建泛型类 Class generictype ?如果不是,那为什么?
【问题讨论】:
-
@AndyTurner,你能分享一个例子,我如何在第二个例子中实现?
-
“是否有可能我可以创建具有特定类型参数的泛型类”尚不清楚,如果它是泛型的,那么它不是特定的。当您键入
public class Genericstring<String> {...}时,您仍在创建泛型类型,但它的名称是String,它隐藏java.lang.String在该类的范围内。正确的解决方案取决于您实际想要做什么。您可以摆脱泛型,只在您想要的地方使用 String,或者您可以创建另一个将extend Genericstring<String>{...}的类。现在你的问题看起来像X/Y problem