可以在Java中使用两个泛型创建对象吗?

可以在Java中使用两个泛型创建对象吗?,java,generics,Java,Generics,我想使用下面的两个泛型定义实例变量 class Foo<S,T>{ private S<T> Boo ; . . } public class Test{ public static void main(String[] args){ Foo<ArrayList, String> foo = new Foo<ArrayList, String>(); } }

我想使用下面的两个泛型定义实例变量

class Foo<S,T>{
     private S<T> Boo ;
     .
     .
}

public class Test{
     public static void main(String[] args){
          Foo<ArrayList, String> foo = new Foo<ArrayList, String>();          

    }
}
class-Foo{
私人秘书处;
.
.
}
公开课考试{
公共静态void main(字符串[]args){
Foo-Foo=新的Foo();
}
}
但它不起作用。。。这是不是有点语法错误?我真的需要修改这种语法。

这是无效的语法

S<T>
也许你需要:

class Foo<S>{
     private S Boo ;
     .
     .
}

public class Test{
     public static void main(String[] args){
          Foo<ArrayList<String>> foo = new Foo<ArrayList<String>>();          

    }
}
class-Foo{
私人秘书处;
.
.
}
公开课考试{
公共静态void main(字符串[]args){
Foo-Foo=新的Foo();
}
}

这将不起作用,因为
ArrayList
有自己的参数,如果不指定它,它将被视为ArrayList

因此,您的代码将被视为
private ArrayList
,这是无效的

对于此类情况,您只需指定
ArrayList
,定义如下:

class Foo<S>{
     private S Boo ;
     .
     .
}

public class Test{
     public static void main(String[] args){
          Foo<ArrayList, String> foo = new Foo<ArrayList<String>>();          

    }
}
但你做不到

class Foo<S<T>, T extends Comparable<T>> {
     private S Boo;
}
class-Foo{
私人秘书处;
}

那它怎么办?难道
S
不需要
t
,类似于
?@Zizouz212我猜是
私人S Boo
。他从来没有指定一个类型
S
,它有一个类型参数哦,真的吗?。实际上,我正在尝试创建一个哈希表,其中slot的数据结构是S。每个S都由以T作为实例变量的节点组成。我想在创建哈希表时选择S,T类型。那么我该怎么做呢?提示:支持两个泛型类型参数。你可以查看源代码。谢谢:)这就是我想要的。顺便说一句,我创建了一个类似这样的类:class Slot,它有对象变量's member'。在我的构造函数Slot(T component)中,我定义了如下构造:this.member=S();。但它不起作用。我不能这样做吗?是的,你不能这样做,如果C是我自己创建的类呢?我的意思不是“ArrayList”,而是“class Moo”
class Foo<S extends Collection<T>, T extends Comparable<T>> {
     private S Boo;
}
class Foo<S<T>, T extends Comparable<T>> {
     private S Boo;
}