我必须通过Java反射调用一个特定的方法.而不是传递硬编码的方法名称,是否可以将方法名称作为字符串传递?
例如
public String getAttribute(Object object1, Object2, String className, String methodName){
Class<?> clazz = Class.forName(className);
Method method = clazz.getMethod(methodName);
return ObjectUtils.firstNonNull(null == object1 ? null: method.invoke(object1),null == object2 ? null: method.invoke(object2); }
Run Code Online (Sandbox Code Playgroud)
我们说我上课了
@Getter
@Setter
Class Student{
String studentName;
String address;
int rollNumber;
}
Run Code Online (Sandbox Code Playgroud)
可以说,我们有来电代码
Student student1 = new Student();// Student record from School 1
Student student2 = new Student(); // Student record from School 2
student2.setAddress("ABC");
System.out.println(getAttribute(student1, student2, Student.class.name(), "getAddress"));
Run Code Online (Sandbox Code Playgroud)
而不是将硬编码的方法名称作为参数传递给getAttribute()方法,有没有办法可以使用非硬编码的方法名称?
例如,getAttribute(student, Student.class.name(), Student.class.getStudentName.getName())这样我们可以在需要时轻松地对学生类的方法和变量进行更改,而无需担心硬编码的方法名称常量.