什么<>用Java做

时间:2013-08-01 02:26:12

标签: java

我目前刚接触Java。到目前为止,我已经能够从JavaScript和PHP的知识中轻松使用基本的ClassesFunctionsArrays等。

但是,我以前从未见过的是:<>。其中包含某种类型的变量。因为我不知道它叫什么,我找不到任何答案。

我见过这样的话:

List<String> myList = new ArrayList<String>();

但也喜欢:

public static <T> boolean contains( final T[] array, final T v ) {
    for ( final T e : array )
        if ( e == v || v != null && v.equals( e ) )
            return true;

    return false;
}

<String>是什么意思? 在函数中,我还想知道T

有什么特别之处

4 个答案:

答案 0 :(得分:5)

这适用于Generic type

它允许你做的是传递一个类型,并使它对多种对象类型有用

因此List是一个通用集合,它允许您创建任何对象的列表。使List<String>使对象成为字符串列表。或者您可以使用List<MyClassType>,它会列出您班级的对象

答案 1 :(得分:2)

定义集合可以容纳的对象的Type

所以当你写List<String> myList = new ArrayList<String>();时,就意味着

  • 创建一个可以容纳String对象的arrayList。

    SomeParameterizedClass {    T someValue; }

表示您可以将类型传递给班级,例如SomeParameterizedClass<String> someValueString类型为List<T> list = new ArrayList<T>();

当您编写List<String> list = new ArrayList<>();时,此处T可以是任何类型。

使用java 7,您只需说<>即可。它具有相同的含义。

在java 7中{{1}}被称为菱形运算符

答案 2 :(得分:0)

你会发现&lt; &GT;在下列情况下,T是普通英语的“参数类型”,这意味着您可以用任何其他非基本类型(如StringInteger)“替换”该T:

  • 当您声明参数化类型时:

    class MyParameterizedClass<T> {
    
        public T myValue;
    
    }
    
  • 当您声明参数化类型的变量时:

    MyParameterizedClass<String> myStringParam;
    MyParameterizedClass<Integer> myIntegerParam;
    
  • 使用参数化类型的构造函数时:

    MyParameterizedClass<String> myStringParam = new MyParameterizedClass<String>();
    MyParameterizedClass<Integer> myIntegerParam = new MyParameterizedClass<Integer>();
    
    myStringParam.myValue = "Hello world";
    myIntegerParam.myValue = 5;
    
  • 声明泛型方法时:

    public <T> T updateMyValue(T myValue) {
        this.myValue = myValue
    }
    

答案 3 :(得分:0)

您观察到的部分正确!在Java中,在&lt;&gt;内应该是'Object'类型或'Object'的任何子类类型。

当你声明myList如下:

List<String> myList = new ArrayList<String>(),它确保声明和初始化的myList只包含String类型的元素。这称为类型声明。

public static <T> boolean contains( final T[] array, final T v ) { },是一个泛型方法声明,暗示传递的两个参数应该是相同的对象类型,第一个参数是数组,第二个参数是一个对象。方法返回类型也应该是同一类型。

有关泛型的更多示例,请参阅Java文档。 http://docs.oracle.com/javase/tutorial/extra/generics/methods.html