import java.util.ArrayList;
import java.util.List;
public class Shelf {
private List<type> shelf = new ArrayList<>();
public void addItem(type item) {
shelf.add(item);
}
public type removeItem(int i) {
type output = shelf.get(i);
shelf.remove(i);
return output;
}
}
public class testclass {
public static void main(String[] args) {
Shelf<String> shelf = new Shelf();
String book = "Books";
shelf.addItem(book);
System.out.println(shelf.removeItem(0));
}
}
我试图找出在创建类时如何初始化类型,以便上面的例子可以工作?
在我有类型的货架类中,这就是程序将使用的类型。
答案 0 :(得分:1)
类型参数可以定义如下:
public class Shelf<type> {
...
}
类型参数部分在类名后面,并由尖括号(<
和>
)分隔。
类型变量可以是您指定的任何非基本类型:任何类类型,任何接口类型,任何数组类型,甚至是其他类型变量。
实例化Shelf
时,请指明其类型:
Shelf<String> shelf = new Shelf<>();
shelf.addItem("a string goes here");
Shelf<Integer> shelf = new Shelf<>();
shelf.addItem(42);
有一些关于类型参数名称的约定。您应该使用type
代替T
:
public class Shelf<T> {
...
}
请参阅Oracle The Java Tutorials的引用(突出显示是我的):
按照惯例,类型参数名称是单个,大写字母。 这与变量naming惯例形成鲜明对比 你已经了解并且有充分的理由:没有这个惯例, 很难说出一个类型变量之间的区别 和普通的类或接口名称。
最常用的类型参数名称是:
E
- 元素(Java集合框架广泛使用)K
- 键N
- 号码T
- 输入V
- 价值S
,U
,V
等 - 第2,第3,第4类
答案 1 :(得分:0)
您可以通过使用类型参数列表对类型名称后缀来创建类型作为泛型:
public class Shelf<type> {
...
}
现在,在Shelf
类的任何位置,只要您想引用客户端在角括号中指定的类型,就可以引用type
。
(通常,您为该占位符指定了第一个字母大写的名称,如Type
,以表明它是类型名称。)