究竟是什么意思将Java类声明为MyClassName <param />?

时间:2015-12-07 10:07:37

标签: java oop generics

我正在开发一个Java应用程序,在其中我找到了这个类:

public class TipologiaGenerica<K> {
    private K codice;
    private String descrizione;

    public TipologiaGenerica(K codice, String descrizione) {
        this.codice = codice;
        this.descrizione = descrizione;
    }
    public K getCodice() {
        return codice;
    }

    public void setCodice(K codice) {
        this.codice = codice;
    }
    public String getDescrizione() {
        return descrizione;
    }
    public void setDescrizione(String descrizione) {
        this.descrizione = descrizione;
    }

}

正如您所看到的,此类声明为: TipologiaGenerica K 似乎类似于对象类型,可以在创建一个特定的 TipologiaGenerica 对象,并确定其内部字段之一的类型,即:

private K codice;

事实上,在代码的其他地方,我找到了一个 TipologiaGenerica 对象创建:

TipologiaGenerica<String> dataPerLista = new TipologiaGenerica<String>(dataString, dataString);

什么意思?我认为以这种方式创建一个特定的 TipologiaGenerica 对象,其内部 codice 字段是字符串

我的推理是否正确? Java的这种特定用途的名称是什么?这种构造函数最常见的用途是什么?

3 个答案:

答案 0 :(得分:3)

它被称为通用类型。您可以使用它们将某些类/方法概括为类型安全代码“模板”。

查看有关此主题的Oracle教程

https://docs.oracle.com/javase/tutorial/java/generics/

答案 1 :(得分:3)

  

我的推理是否正确?

  

Java的这种特定用途的名称是什么?

Generics

  

这种构造函数最常见的用途是什么?

类型安全

答案 2 :(得分:1)

这在Java中称为泛型。使用这种类型的编程是为了确保类型安全,并且您可以通过插入各种对象类型来重用相同的父类。例如在你的情况下,你做了

TipologiaGenerica<String>

用户可以将相同的类重用于其他类型,例如

TipologiaGenerica<Integer>