1

例如,我有一个这样开始的课​​程

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 中的所有元素都应该是整数类型。我怎么能做这样的事情Class x = new Integer/String ... Class();所以我可以在 x 中指定对象的类型

4

4 回答 4

1

使用泛型

public class YourClass<T>{
    private ArrayList<T> x = new ArrayList<T>();

然后在主

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, 或其他。

于 2013-11-08T16:27:06.330 回答
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);
}
于 2013-11-08T16:17:46.290 回答
0
Class<Integer> x = new Class<Integer>();

不要为已经在java.lang包中定义的类使用名称。

于 2013-11-08T16:16:25.997 回答
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>();
    ....
}

是一个泛型类,但您不使用类型参数。但这不是问题,您的课程仍然可以工作。当你说:

Class x = new Class();

类型 T 将只是 Object。但是由于您不使用此类型参数,因此它没有任何效果。

总而言之,您的陈述:

Class x = new Integer();

永远不会工作,因为 Integer 与 Class 没有“是”关系。泛型不用于此目的。

于 2013-11-08T16:35:59.763 回答