您的位置 首页 java

java泛型方法

/**

* 测试 泛型 方法 非 静态方法 静态方法

*/

public class Test4 {

//不在类的声明上使用泛型

public <T> void setName(T name){

//在返回值类型前面加<>泛型 泛型T在方法内有效 可以在返回值类型、 形参 列表和方法体内使用T

System.out.println(name);

}

public <T> T getName(T name){

return name;

}

public static void main(String[] args) {

Test4 t4 = new Test4();

t4.setName(123);

//泛型方法在调用时不需要<>声明类型 编译会自行判断

//这里传入123 编译判断为 Integer 将T变为该类型

t4.setName(“asd”);

//每次调用不会互相影响 每次独立判定T的类型

Integer name = t4.getName(455);

//在定义泛型方法时虽然set get方法都是<T> 但两个的T不相干 泛型方法与泛型方法之间不统一类型

System.out.println(name);

String name1 = t4.getName(“qwe”);

//每次调用不互相影响

System.out.println(name1);

}

}

class Test5<T>{

//定义泛型类

private T flag;

public void setFlag(T flag){

//非静态方法 使用外部调用时设定的T类型

this.flag = flag;

}

public T getFlag(){

//T可以用在返回类型、形参列表和方法体中

return this.flag;

}

public <T> void printName(T name){

//设定泛型非静态方法 泛型方法中的T不再是泛型类中的T 方法内调用方法的T

System.out.println(name);

}

public static <T> T getName(T name){

//泛型静态方法无法调用泛型类中的T 必须在方法上定义泛型 方法内也无法使用泛型类的T

return name;

}

public static void main(String[] args) {

Test5<Integer> i5 = new Test5<>();

//设定类的T为Integer

i5.setFlag(5);

System.out.println(i5.getFlag());

//调用类的T的非静态方法 随类变为了Integer

i5.printName(“asd”);

//泛型非静态方法 编译时自行判断方法的T 这里没有调用类的Integer

//非静态方法既可以通过泛型类的T设定类型 也可以通过方法声明<T>自己设定

Boolean name = Test5.getName(true);

//泛型静态方法只能通过方法声明T 调用时同样不需要<>设定

if (name){

System.out.println(name);

}

}

}

文章来源:智云一二三科技

文章标题:java泛型方法

文章地址:https://www.zhihuclub.com/196761.shtml

关于作者: 智云科技

热门文章

网站地图