java 反射获取属性值
时间: 2023-11-01 07:43:32 浏览: 113
Java反射可以通过getField()、getDeclaredField()和getProperty()等方法获取属性值。其中,getField()用于获取public修饰的属性,而getDeclaredField()则可以获取所有修饰符的属性,包括private、protected等。getProperty()用于获取JavaBean类的属性值。
相关问题
java反射获得属性值_java反射取对象属性值 不是通过get方法取值?
可以通过反射获得对象的属性值,不一定需要通过getter方法。使用反射可以直接访问对象的私有属性,而不需要暴露getter方法。以下是通过反射获取对象属性值的示例代码:
```
public class MyClass {
private int myField;
public MyClass(int myField) {
this.myField = myField;
}
}
// ...
MyClass obj = new MyClass(42);
Field field = obj.getClass().getDeclaredField("myField");
field.setAccessible(true);
int value = (int) field.get(obj);
System.out.println(value); // prints "42"
```
这段代码首先获取了`MyClass`类的`myField`属性,然后设置该属性可访问,并使用`get`方法获取`obj`对象的`myField`属性值。注意,使用反射访问私有属性时,需要先设置属性可访问。
java反射设置属性值_Java反射:根据属性名得到其Set方法设置它的值
可以通过Java反射来根据属性名得到其Set方法,然后设置它的值。具体实现步骤如下:
1. 获取类的Class对象,可以使用Class.forName("类的全限定名")方法或者类名.class方式。
2. 获取属性的Field对象,可以使用Class.getDeclaredField("属性名")方法。
3. 获取Set方法的Method对象,Set方法的名称为"set"加上属性名,第一个字母大写。可以使用Class.getMethod("方法名",参数类型)方法,其中方法名为"set"加上属性名,参数类型为属性的类型。
4. 调用Method对象的invoke方法,传入要设置的对象和属性值作为参数,即可完成属性值的设置。
下面是示例代码:
```java
public class ReflectTest {
public static void main(String[] args) throws Exception {
// 获取类的Class对象
Class<?> clazz = Class.forName("com.example.User");
// 获取属性的Field对象
Field field = clazz.getDeclaredField("name");
// 获取Set方法的Method对象
String methodName = "set" + field.getName().substring(0, 1).toUpperCase() + field.getName().substring(1);
Method method = clazz.getMethod(methodName, field.getType());
// 创建对象
Object obj = clazz.newInstance();
// 调用Set方法设置属性值
method.invoke(obj, "张三");
// 输出属性值
System.out.println(field.get(obj));
}
}
```
上述代码中,我们通过反射的方式获取到了User类的name属性,并且成功设置了它的值为"张三"。
阅读全文