我有一个泛型类。
因为我使用泛型,所以使用addNode( )
在Mylist上添加我想要的任何类型的对象都很容易。但是,如果我想在课堂上添加(int) 5
。我怎么能这样做? (例如,参见以下代码中的注释)。
class MyList <T>
{
Node <T> head = null;
public void addNode(T element) {
head = new Node <T> (element);
}
//Other methods removed for simplicity
public void myMethod () {
MyList <T> newList = new MyList <T>();
//Below code generate error: required: T, found: int
newList.addNode(5); //How to add an int 5 here when it is expecting Type:T?
}
}
class Node <T>
{
T element;
public Node(T item)
{
element = item;
}
//Other methods removed for simplicity
}
答案 0 :(得分:5)
class MyList<T> { // ... public void addNode(T element) { // ... } public void myMethod() { MyList<T> newList = new MyList<T>(); newList.addNode(5); // <- can't do that! } }
如果你可以在那里添加一个整数,那么该类将不再是通用的。它会打败目的。
在使用MyList
的此类之外的方法中,您可以执行此操作:
void another() {
MyList<Integer> list = new MyList<Integer>();
list.addNode(5);
MyList<String> list2 = new MyList<String>();
list.addNode("hello");
}
<强>更新强>
如果我需要将Integer和Nodes对象添加到列表中怎么办?我们有什么方法可以做到吗?
你可以这样做,但是,模板参数变得毫无意义,你正在失去正确的类型检查功能。通常你不应该这样做。
MyList<Object> list3 = new MyList<Object>();
list3.addNode(12);
list3.addNode("heya");