在Java和Android中,我最终使用ArrayList<String>
作为供应列表,因为我发现它们比标准String[]
更容易使用。我真正的问题是:
被调用的<String>
的{{1}}部分是什么?
如何创建类并使用ArrayList<String>
[修改]? (我不知道它实际上叫什么,所以现在它是修饰语。)
谢谢!
答案 0 :(得分:7)
在这里,你可能会看得更清楚:
ArrayList<TypeOfYourClass>
您可以创建一个Person类,并将其传递给ArrayList,如此代码段显示:
ArrayList<Person> listOfPersons = new ArrayList<Person>();
答案 1 :(得分:5)
<String>
部分是类型参数。它为类型参数提供了一个“值”,这是E
中的ArrayList<E>
...就像你有一个方法一样:
public void foo(int x)
你打电话给:
foo(5)
参数为x
,提供的参数为5
。类型参数和类型参数基本上是通用的等价物。
请参阅section 4.5 of the JLS(及其中的链接)以获取更多详细信息 - 以及Java Generics FAQ以获取有关泛型的详细信息,而不是您可能想要阅读的内容:)
答案 2 :(得分:2)
<>
之间的位是一个类型参数,该功能称为Generics
答案 3 :(得分:2)
假设您希望仅使用字符串填充ArrayList。 如果你写:
ArrayList<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
你可以肯定,如果有人试图用int填充arrayList,它将在complile time中被检测到。
因此,泛型用于你想要这样的强制限制的情况。
答案 4 :(得分:1)
查找Java的泛型语法。这将使你顺利(好吧,有点;很多人发现Java的方法不如C ++和C#)。
答案 5 :(得分:1)
是类型参数。在Java中,当类被编写为通用类时,您必须提供其中一个。
以下是Generic类定义的示例
private class GNode<T>
{
private T data;
private GNode<T> next;
public GNode(T data)
{
this.data = data;
this.next = null;
}
}
您现在可以创建传入的任何类型的节点.T充当类定义的泛型类型参数。如果要创建整数节点,只需执行:
GNode<Integer> myNode = new GNode<Integer>();
应该注意,您的类型参数必须是对象。这可以通过Java的自动装箱和自动拆箱来实现。这意味着您不能使用java原语类型,而必须使用相应的类。
Boolean instead of bool
Integer instead of int
Double instead of double
etc...
另外,如果你没有传入一个类型参数,我很确定你的代码仍然可以编译。但它不起作用。