Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java如何设置对象类型_Java - Fatal编程技术网

Java如何设置对象类型

Java如何设置对象类型,java,Java,例如,我有一门课是这样开始的 public class Class<T> { private ArrayList<Integer> x = new ArrayList<Integer>(); x中的所有元素都应为整数类型。我如何做像classx=newinteger/String。。。类()这样我就可以指定x中对象的类型classx=newclass(); Class<Integer> x = new Class<Integer&g

例如,我有一门课是这样开始的

public class Class<T> {
    private ArrayList<Integer> x = new ArrayList<Integer>();
x中的所有元素都应为整数类型。我如何做像
classx=newinteger/String。。。类()
这样我就可以指定x中对象的类型
classx=newclass();
Class<Integer> x = new Class<Integer>();

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

您的意思是这样的吗

public class MyClass<T>{
    private final List<T> x = new ArrayList<T>();
使用

公共类您的类{
private ArrayList x=new ArrayList();
那么大体上

public class Main{
    public static void main(String args[]){
        YourClass<Integer> x = new YourClass<Integer>();
}
公共类主{
公共静态void main(字符串参数[]){
YourClass x=新的YourClass();
}

YourClass x=newyourclass();

YourClass
可能是一个
Integer
String
,或者其他任何东西。

我想你被多态性和泛型弄糊涂了

你想要什么:

Class x = new Integer();
是多态性。只有当类是Integer的基类时,此语句才有效,而事实显然并非如此

Parent x = new Child();
如果

class Child extends Parent {
    ....
}
您编写的课程:

public class Class<T> {
    private ArrayList<Integer> x = new ArrayList<Integer>();
    ....
}
类型T将只是对象。但由于您不使用此类型参数,因此它没有任何效果

总而言之,你的声明:

Class x = new Integer();

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

不要调用
这只是混淆。@Boristeider这也不是一个好做法。OP可能还需要更改为
私有ArrayList x=new ArrayList()
这就是你想要的。+1感谢你说OP需要的是泛型。谢谢,我想这正是我需要的。但是如果我想做一个向x添加元素的函数,我怎么称呼它呢?x.add(T object?)@user2969608编辑了答案。非常感谢!我试图投赞成票,但说我需要15个声誉。还有一个问题。为什么是私有最终列表x而不是私有最终ArrayList x?有什么区别吗?因为你应该总是这样。
List
是接口,
ArrayList
是实现。你可能应该阅读。Yes、 如果您指定类型参数T,它将被用作实际类型。如果您说Class x=new Class();那么在您的类中,无论在哪里使用T,它都表示整数。请检查:谢谢您,这有帮助:)
Parent x = new Child();
class Child extends Parent {
    ....
}
public class Class<T> {
    private ArrayList<Integer> x = new ArrayList<Integer>();
    ....
}
Class x = new Class();
Class x = new Integer();