如何获取return class 成员的方法?
How to get the methods that return the class members?
我想知道我是否可以得到returnclass个成员的方法。
例如我有一个名为 Person
的 class 在这个 class 里面有两个成员是 name
和 age
并且在这个 class 我有以下 4 种方法:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
所以如果我使用方法 Person.class.getDeclaredMethods();
它 return 在此 class 中声明的所有方法以及 Person.class.getDeclaredMethods()[0].getReturnType();
return return 方法的类型。
但是我需要的是获取return两个变量name
和age
的方法,在这种情况下是方法是 public String getName()
和 public int getAge()
.
我能做什么?
您的 class name
和 age
不是 全局的。他们需要在他们之前有一个 static
才能成为全球性的。为了使用实例和反射访问您的字段,您可以执行类似
的操作
public static void main(String args[]) {
Person p = new Person("Elliott", 37);
Field[] fields = p.getClass().getDeclaredFields();
for (Field f : fields) {
try {
f.setAccessible(true);
String name = f.getName();
String val = f.get(p).toString();
System.out.printf("%s = %s%n", name, val);
} catch (Exception e) {
e.printStackTrace();
}
}
}
输出是(如我所料)
name = Elliott
age = 37
我想知道我是否可以得到returnclass个成员的方法。
例如我有一个名为 Person
的 class 在这个 class 里面有两个成员是 name
和 age
并且在这个 class 我有以下 4 种方法:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
所以如果我使用方法 Person.class.getDeclaredMethods();
它 return 在此 class 中声明的所有方法以及 Person.class.getDeclaredMethods()[0].getReturnType();
return return 方法的类型。
但是我需要的是获取return两个变量name
和age
的方法,在这种情况下是方法是 public String getName()
和 public int getAge()
.
我能做什么?
您的 class name
和 age
不是 全局的。他们需要在他们之前有一个 static
才能成为全球性的。为了使用实例和反射访问您的字段,您可以执行类似
public static void main(String args[]) {
Person p = new Person("Elliott", 37);
Field[] fields = p.getClass().getDeclaredFields();
for (Field f : fields) {
try {
f.setAccessible(true);
String name = f.getName();
String val = f.get(p).toString();
System.out.printf("%s = %s%n", name, val);
} catch (Exception e) {
e.printStackTrace();
}
}
}
输出是(如我所料)
name = Elliott
age = 37