利用java反射调用泛型的方法

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_38861828/article/details/102710440

创建一个通用于pojo的工具类Service,Service中用到了泛型T,并且需要调用T(pojo)中的方法,解决方案示例如下:

Service.java

import java.lang.reflect.Method;

public class Service<T> {
	
	public void fun(T t) {
		try {
			//获取method对象,其中包含方法名称和参数列表
			Method setName = t.getClass().getMethod("setName", String.class);
			//执行method,t为实例对象,后面是方法参数列表;setName没有返回值
			setName.invoke(t, "tom");
			
			//getName无参有返回值
			Method getName = t.getClass().getMethod("getName");
			//object为getName的返回值
			Object result = getName.invoke(t);
			
			System.out.println(result);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

User.java

public class User {

	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

测试

public static void main(String[] args) throws NoSuchMethodException, SecurityException {
		User user = new User();
		Service<User> service = new Service<User>();
		service.fun(user);
		System.out.println(user.getName());
	}

输出

result 为 tom

user.getName() 为 tom

猜你喜欢

转载自blog.csdn.net/qq_38861828/article/details/102710440