Java如何设置对象类型

时间:2013-11-08 16:15:35

标签: java

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

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

中指定对象的类型

4 个答案:

答案 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>可以是IntegerString或其他任何内容。

答案 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”关系。泛型不用于此目的。