java泛型

说明

泛型就是泛指一种类型。

如何使用泛型

1. 泛型类

public class 类名 <泛型类型1,...> {
   
}

例:

public class TestClass<T> {
  private T value;


  public TestClass(T value) {
      this.value = value;
  }
  public T getValue() {
      return value;
  }
  public void setValue(T value) {
      this.value = value;
  }
}

2. 泛型接口

public <泛型类型> 返回类型 方法名(泛型类型 变量名) {
   
}

例:

public interface TestInterface<T> {
void show(T value);}
}
public class StringShowImpl implements TestInterface<String> {
  @Override
  public void show(String value) {
      System.out.println(value);
  }
}

public class NumberShowImpl implements GenericInterface<Integer> {
  @Override
  public void show(Integer value) {
  System.out.println(value);
  }
}

3. 泛型方法

修饰符 <代表泛型的变量> 返回值类型 方法名(参数){ }

例:

/**
    *
    * @param t 传入泛型的参数
    * @param <T> 泛型的类型
    * @return T 返回值为T类型
    * 说明:
    *   1)public 与 返回值中间<T>非常重要,可以理解为声明此方法为泛型方法。
    *   2)只有声明了<T>的方法才是泛型方法,泛型类中的使用了泛型的成员方法并不是泛型方法。
    *   3)<T>表明该方法将使用泛型类型T,此时才可以在方法中使用泛型类型T。
    *   4)与泛型类的定义一样,此处T可以随便写为任意标识,常见的如T、E等形式的参数常用于表示泛型。
    */
  public <T> T genercMethod(T t){
      System.out.println(t.getClass());
      System.out.println(t);
      return t;
  }


public static void main(String[] args) {
  GenericsClassDemo<String> genericString = new GenericsClassDemo("helloGeneric"); //这里的泛型跟下面调用的泛型方法可以不一样。
  String str = genericString.genercMethod("hello");//传入的是String类型,返回的也是String类型
  Integer i = genericString.genercMethod(123);//传入的是Integer类型,返回的也是Integer类型
}

class java.lang.String
hello

class java.lang.Integer
123

通配符

泛型有三种通配符

一:<?>

无边界通配符,表示类型参数可以是任何类型。例:

public class Apple<?>{}

二:<? extends E>

固定上边界的通配符,表示类型参数必须是E或者是E的子类。

public class Apple<T extends Test>{}

三:<? supers E>

固定下边界的通配符,表示类型参数必须是E或者是E的超类型

public class Apple<T supers Test>{}

附录一:常用泛型参数名称

E: Element (在集合中使用,因为集合中存放的是元素)
T:Type(Java 类)
K: key-value形式 Key(键)
V: key-value形式 Value(值)
N: Number(数值类型)
?: 表示不确定的java类型

 

posted @ 2022-07-19 17:56  liwinallucky  阅读(30)  评论(0)    收藏  举报