【Java】在泛型类中访问T类型的方法

工程目录

在这里插入图片描述
新建一个Java控制台项目即可;

代码

Student.java

实体类

package com.study.demo02;

public class Student {
    private int id;

    private String studentName;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getStudentName() {
        return studentName;
    }

    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }
}

People.java

泛型类

package com.study.demo02;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class People<T> {
    public int getId(T t){
        try{
            Class<? extends Object> tClass = t.getClass();

            //整合出 getId() 属性这个方法
            Method m = tClass.getMethod("getId");

            //调用这个整合出来的get方法,强转成自己需要的类型
            int id = (int)m.invoke(t);

            return id;
        }catch(Exception e){
            return -1;
        }
    }
}

Demo02.java

测试类

package com.study.demo02;

/**
 * 通过反射机制访问泛型T中的方法
 */
public class Demo02 {
    public static void main(String[] args) {
        People<Student> people = new People<Student>();
        Student stu = new Student();
        stu.setId(2);
        System.out.println(people.getId(stu));
    }
}

说明

上面的方法看起来并没有什么特别的用处,但实际上给了我们将公用方法提到泛型类中的一个途径;

参考

https://www.cnblogs.com/xuehuashanghe/p/10483803.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值