为了账号安全,请及时绑定邮箱和手机立即绑定

<T>(尖括号)在Java中是什么意思?

<T>(尖括号)在Java中是什么意思?

胡说叔叔 2019-07-06 16:18:47
<T>(尖括号)在Java中是什么意思?我目前正在学习Java,最近被尖括号(<>)所困扰。他们到底是什么意思?public class Pool<T>{     public interface PoolFactory<T>{         public T createObject();     }     this.freeObjects= new ArrayList<T>(maxsize)}是什么<T>刻薄?这是否意味着我可以创建一个类型为T?
查看完整描述

3 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

<T>属属通常可以理解为“T型”。它取决于<>的左边的类型,它实际上意味着什么。

我不知道PoolPoolFactory但你也提到ArrayList<T>,这是一个标准的Java类,因此我将讨论这个问题。

通常,你不会在里面看到“T”,你会看到另一种类型。所以如果你看到ArrayList<Integer>例如,意思是“ArrayListInteger例如,许多类使用泛型来约束容器中元素的类型。HashMap<String, Integer>,意思是“一张地图String钥匙和Integer价值。“

您的池示例有点不同,因为您在这里定义一堂课。因此,在这种情况下,您正在创建一个类,其他人可以用特定类型实例化类来代替T。例如,我可以创建一个类型为Pool<String>使用您的类定义。这意味着两件事:

  • 我的

    Pool<String>

    会有一个接口

    PoolFactory<String>

    带着

    createObject

    方法返回

    String

    S.
  • 内部,

    Pool<String>

    会包含一个

    ArrayList

    弦乐乐队。

这是个好消息,因为在另一个时间,我可以来创建一个Pool<Integer>它将使用相同的代码,但是Integer无论你看到什么T在源头。


查看完整回答
反对 回复 2019-07-06
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

它与java中的泛型有关。如果我提到ArrayList<String>这意味着我只能向该ArrayList添加字符串类型对象。

Java中泛型的两个主要好处是:

  1. 减少程序中的强制转换数量,从而减少程序中潜在错误的数量。
  2. 提高代码清晰度


查看完整回答
反对 回复 2019-07-06
?
潇湘沐

TA贡献1816条经验 获得超6个赞

真的很简单。中引入的一个新特性J2SE 5..在类名之后指定角括号意味着要创建一个临时数据类型,它可以容纳任何类型的数据。

例子:

class A<T>{
    T obj;
    void add(T obj){
        this.obj=obj;
    }
    T get(){
        return obj;
    }}public class generics {
    static<E> void print(E[] elements){
        for(E element:elements){
            System.out.println(element);
        }
    }

    public static void main(String[] args) {
        A<String> obj=new A<String>();
        A<Integer> obj1=new A<Integer>();
        obj.add("hello");
        obj1.add(6);
        System.out.println(obj.get());
        System.out.println(obj1.get());

        Integer[] arr={1,3,5,7};
        print(arr);
    }}

而不是<T>,你实际上可以写任何东西,而且它的工作方式也是一样的。试着写作<ABC>代替<T>.

这只是为了方便:

  • <T>

    被称为任何类型
  • <E>

    As元素类型
  • <N>

    AS型
  • <V>

    作为价值
  • <K>

    作为关键

但你可以给它起任何你想要的名字,这并不重要。

此外,IntegerStringBooleanETC是Java的包装类,它有助于在编译期间检查类型。例如,在上面的代码中,obj是类型的String,所以您不能向它添加任何其他类型(尝试obj.add(1),会造成错误)。同样,obj1Integer类型,您不能向它添加任何其他类型(尝试obj1.add("hello"),错误就会出现)。


查看完整回答
反对 回复 2019-07-06
  • 3 回答
  • 0 关注
  • 1564 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号