可以在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;
}