例如,我有一个像这样开始的课程
public class Class<T> {
private ArrayList<Integer> x = new ArrayList<Integer>();
主要在我做的时候
public class Main {
public static void main(String args[]) {
Class x = new Class();
x中的所有元素都应该是Integer类型。我怎样才能做Class x = new Integer/String ... Class();
之类的事情所以我可以在x
答案 0 :(得分:1)
你的意思是这样的吗?
public class MyClass<T>{
private final List<T> x = new ArrayList<T>();
现在,您的List
属于MyClass
的通用类型。
修改强>
评论中的OP - 如果我想制作一个向x添加元素的函数。
为了做到这一点,你需要创建一个方法(而不是函数)来获取T
类型的项并将其添加到x
public void addThing(final T thing) {
x.add(thing);
}
答案 1 :(得分:1)
使用Generics。
public class YourClass<T>{
private ArrayList<T> x = new ArrayList<T>();
然后在Main
public class Main{
public static void main(String args[]){
YourClass<Integer> x = new YourClass<Integer>();
}
或
YourClass<String> x = new YourClass<String>();
YourClass<T>
可以是Integer
,String
或其他任何内容。
答案 2 :(得分:0)
Class<Integer> x = new Class<Integer>();
请勿对java.lang
包中已定义的类使用名称。
答案 3 :(得分:0)
我认为你对多态和泛型感到困惑。
你想要什么:
Class x = new Integer();
是多态性。只有Class是Integer的基类时,此语句才有效,显然不是这种情况。
Parent x = new Child();
如果,将有效
class Child extends Parent {
....
}
你写的课程:
public class Class<T> {
private ArrayList<Integer> x = new ArrayList<Integer>();
....
}
是泛型类,但您不使用type参数。这不是问题,你的班级仍然可以工作。当你说:
Class x = new Class();
类型T将只是对象。但由于您不使用此类型参数,因此它没有任何效果。
总结一下,您的陈述:
Class x = new Integer();
永远不会起作用,因为Integer与Class没有“is a”关系。泛型不用于此目的。