Java 使用泛型类型变量列表初始化
我在读关于泛型类型的书。我能够理解泛型类型可以用来指定对象或集合可以使用的内容类型,以避免运行时错误,并仅在编译时解决它 我想知道如何创建一个类型变量(T=List)为List的泛型类。例如,在下面的示例中,它是字符串Java 使用泛型类型变量列表初始化,java,generics,Java,Generics,我在读关于泛型类型的书。我能够理解泛型类型可以用来指定对象或集合可以使用的内容类型,以避免运行时错误,并仅在编译时解决它 我想知道如何创建一个类型变量(T=List)为List的泛型类。例如,在下面的示例中,它是字符串 import java.util.ArrayList; import java.util.List; public class Test<T> { T string; public Test(T in) { this.strin
import java.util.ArrayList;
import java.util.List;
public class Test<T> {
T string;
public Test(T in) {
this.string = in;
}
public static void main(String args[]) {
Test<String> o = new Test<String>("Generic");
}
}
import java.util.ArrayList;
导入java.util.List;
公开课考试{
T字串;
公共测试(T英寸){
this.string=in;
}
公共静态void main(字符串参数[]){
试验o=新试验(“通用”);
}
}
如果您希望您的列表严格地成为字符串列表。然后只需将您的列表声明为list
我想知道如何创建一个类型变量(T)为
=列表)是列表
将列表
指定为参数化类型
要进行列表的一般测试,请执行以下操作:
List<String> myList = new ArrayList<>();
...
Test<List<String>> o = new Test<>(myList);
List myList=new ArrayList();
...
测试o=新测试(myList);
以这种方式,开发人员必须使用属于集合es的类(列表、数组列表、向量等)
公共类测试{…}
更新
public class Test<E,T extends Collection<E>>{ ... }
公共类测试{…}
只需声明您不喜欢列表的扩展
更改此项:
public class Test<T> {
公共类测试{
对此
public class Test<T extends List> {
公共类测试{
在这种情况下,您将无法编写以下内容:
Test<String> o = new Test<String>();
Test o=新测试();
我不理解这个问题。你刚刚创建了一个泛型类,并创建了一个t=String的对象。我认为你混淆了构造函数和方法。你想让一个名为String
的成员和一个名为列表的成员吗?你可能应该有一个构造函数来初始化这两个。你为什么要这样做K将一个值分配给<代码>字符串> >将神奇地创建一个<代码>列表>代码>并通过<代码> v>代码>来访问它,如果你创建了这个类,而不是作为一个泛型,而是把所有的<代码> t>代码>替换为<代码>字符串< /> >,你希望你的代码工作吗?用String
Test
把你班上所有的T
放在一起,我同意你的看法。我的回答是“简单”在OP要求不是很清楚之后。@OhGodspides,你能用一个例子解释一下你在说什么吗?不要使用原始类型。要么让它t extensed Collection
,要么指定一个额外的类型变量:E,t extensed Collection
。
Test<String> o = new Test<String>();