如何在我的课程中添加类型?

时间:2017-10-23 01:28:25

标签: java

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

  }



}

我试图找出在创建类时如何初始化类型,以便上面的例子可以工作?

在我有类型的货架类中,这就是程序将使用的类型。

2 个答案:

答案 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 - 价值
  •   
  • SUV等 - 第2,第3,第4类
  •   

答案 1 :(得分:0)

您可以通过使用类型参数列表对类型名称后缀来创建类型作为泛型:

public class Shelf<type> {
    ...
}

现在,在Shelf类的任何位置,只要您想引用客户端在角括号中指定的类型,就可以引用type

(通常,您为该占位符指定了第一个字母大写的名称,如Type,以表明它是类型名称。)