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();