1.泛型类
Couple.java
package lgw.sample;
//泛型类示例
public class Couple<T> {
private T wife;
private T husband;
public Couple(T wife, T husband) {
this.wife = wife;
this.husband = husband;
}
public T getWife() {
return wife;
}
public void setWife(T wife) {
this.wife = wife;
}
public T getHusband() {
return husband;
}
public void setHusband(T husband) {
this.husband = husband;
}
}
Person.java
package lgw.model;
public class Person {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person [name=" + name + "]";
}
}
Test.java
package lgw;
import lgw.model.Person;
import lgw.sample.Couple;
/*
* 泛型类的使用
* 本Test测试的是定义的泛型类Couple,泛型参数是Person类
*/
public class Test {
public static void main(String args[]) {
Couple<Person> couple = new Couple<Person>(new Person("mary"), new Person("tom"));
Person person1 = couple.getHusband(); //person1是丈夫
Person person2 = couple.getWife(); //person2是老婆
System.out.println(person1);
System.out.println(person2);
}
}
输出结果:
Person [name=tom]
Person [name=mary]
2.泛型方法
GenericMethod.java
package lgw.sample;
//泛型方法示例
public class GenericMethod {
public static <T> T getFirstValue(T[] values) {
return values[0];
}
}
Test2.java
package lgw;
import lgw.sample.GenericMethod;
public class Test2 {
public static void main(String[] args) {
String[] values = {"JavaSE", "CoreJava", "EffectiveJava"};
//当我们将String[]类型的实参values传递给方法时编译器就知道了泛型参数是String,因此方法前的<Stirng>可以省略
// String firstValue = GenericMethod.<String>getFirstValue(values);
String firstValue = GenericMethod.getFirstValue(values);
System.out.println(firstValue);
}
}
附: