Java 使用泛型类型变量列表初始化

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

我在读关于泛型类型的书。我能够理解泛型类型可以用来指定对象或集合可以使用的内容类型,以避免运行时错误,并仅在编译时解决它

我想知道如何创建一个类型变量(T=List)为List的泛型类。例如,在下面的示例中,它是字符串

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>();