
/**
* 测试泛型方法 非静态方法 静态方法
*/
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|java泛型方法】
- 程序员|程序员的口味变了!C++首次逆袭JAVA:跻身最受欢迎编程语言TOP3
- Java|华为笔记本双12大促开启 智慧体验让办公学习更高效
- Java|京东第一刀落下:多个副总裁卸任 刘强东嫡系人手接管
- Java|荣耀Magic5Pro很大胆,16GB+5000mAh+100W,香喷喷
- Java|MIUI14把精简当作核心卖点,国产系统急需做减法
- Java|“高薪专业户”的IT互联网行业是否已达到天花板?Java行业薪酬
- javascript|全民淘宝节|千万个淘宝卖家,有千万种答案
- 【微服务】146:商品品牌业务后台Java代码编写
- 【微服务】162:利用Java实现索引库相关的分页、排序和聚合
- Java|闹剧结束了?台积电正式宣布,美媒:张忠谋把关键技术留在了本土
