小编典典
嗯,那是一本奇怪的书。我将根据我所知告诉您要点。
泛型是一种构造,使您可以在编译时检查要在特定集合,方法或类中尝试使用的类型是否实际上是知道该特定事物起作用所必需的功能的事物。
例如,您需要使用由模板中名为SearchParameter的接口确定的功能,但您只能将参数视为一个对象。或者,在您的情况下,一个更好的示例可能是这样的自定义接口IntegerConvert:
public interface IntegerConvert
{
Integer returnAsInteger();
}
您可能会遇到一个像这样的类:
public class MyData implements IntegerConvert
{
private String data;
public MyData(String data)
{
this.data = data;
}
@Override
public Integer returnAsInteger()
{
return Integer.parseInt(data); //throws ParseException if it doesn't work
}
}
然后,您可以具有以下列表:
List listOfConvertibles = new ArrayList();
或者如果您想在将来变得更通用,
List extends IntegerConvert> listOfConvertibles = new ArrayList();
然后你可以做
listOfConvertibles.add("25");
listOfConvertibles.add("40");
listOfConvertibles.add("35");
for(IntegerConvert ic : listOfConvertibles)
{
System.out.println("" + ic.returnAsInteger());
}
我想这虽然是一个过于复杂的例子。下面是一个更简单的示例:
public class Node
{
private E data;
public Node(E e)
{
this.data = e;
}
public E getData()
{
return data;
}
public void setData(E e)
{
data = e;
}
public void print()
{
System.out.println(data.toString());
}
}
public class MyClass
{
public void doSomething()
{
List> listOfFloatNodes = new ArrayList>();
listOfFloatNodes.add(new Node(new Float(8.7472742f)));
listOfFloatNodes.add(new Node(new Float(5.56842742f)));
listOfFloatNodes.add(new Node(new Float(6.5467742f)));
MyOtherClass moc = new MyOtherClass();
moc.useNodeList(listOfFloatNodes);
}
}
public class MyOtherClass
{
public void useNodeList(List> list)
{
for(Node node : list)
{
printNode(node);
}
}
public void printNode(Node node)
{
node.print();
}
}
public class MainClass
{
public static void main(String[] args)
{
MyClass myClass = new MyClass();
myClass.doSomething();
}
}
如有任何疑问,请发表评论。
2020-09-23