java反射filed类 set方法
时间: 2023-04-24 21:04:06 浏览: 109
Java反射中,Field类的set方法用于设置指定对象中的指定字段的值。该方法需要两个参数:第一个参数是要设置值的对象,第二个参数是要设置的值。例如:
```
public class Person {
private String name;
private int age;
// 省略getter和setter方法
}
public static void main(String[] args) throws Exception {
Person person = new Person();
Field nameField = person.getClass().getDeclaredField("name");
nameField.setAccessible(true); // 设置为可访问
nameField.set(person, "张三"); // 设置name字段的值为"张三"
Field ageField = person.getClass().getDeclaredField("age");
ageField.setAccessible(true); // 设置为可访问
ageField.set(person, 18); // 设置age字段的值为18
}
```
相关问题
java.lang.IllegalArgumentException no filed
引用中的异常信息 "java.lang.IllegalArgumentException: Can not set java.lang.Integer field reflect.FieldTrouble.val to (int)42" 表示在设置一个 Integer 类型的字段时,传入了一个 int 类型的值,导致类型不匹配,从而抛出了 IllegalArgumentException 异常。
在 Java 中,如果要通过反射来设置一个字段的值,需要使用 Field 类的 set 方法。set 方法有两个参数,第一个参数是要设置值的对象,第二个参数是要设置的值。如果要设置的值的类型与字段的类型不匹配,就会抛出 IllegalArgumentException 异常。
引用中提到,NoSuchFieldException 和 IllegalAccessException 异常也可能在使用反射设置字段值时抛出。NoSuchFieldException 表示要设置的字段不存在,IllegalAccessException 表示没有权限访问该字段。
引用中的代码演示了如何使用反射获取字段的类型和泛型类型。在该代码中,通过 Class 类的 getField 方法获取指定名称的字段,然后使用 Field 类的 getType 方法获取字段的类型,使用 getGenericType 方法获取字段的泛型类型。
json文件的内容是这种,{"filed1":"2","filed2":"4"} {"filed1":"1","filed2":"3"} {"filed1":"4","filed2":"5"},java代码怎么取
你可以使用Java中的JSON库来解析JSON文件。以下是一个使用Jackson库的示例代码,它可以将JSON文件中的数据读取到Java对象中:
```java
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.io.IOException;
public class JsonReader {
public static void main(String[] args) {
ObjectMapper mapper = new ObjectMapper();
try {
// 读取JSON文件
File file = new File("example.json");
// 将JSON数据读取到Java对象中
Data[] data = mapper.readValue(file, Data[].class);
// 输出Java对象中的数据
for (Data d : data) {
System.out.println("filed1: " + d.getFiled1() + ", filed2: " + d.getFiled2());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class Data {
private String filed1;
private String filed2;
public String getFiled1() {
return filed1;
}
public void setFiled1(String filed1) {
this.filed1 = filed1;
}
public String getFiled2() {
return filed2;
}
public void setFiled2(String filed2) {
this.filed2 = filed2;
}
}
```
在这个示例中,我们使用了Jackson库来读取JSON文件,并将其转换为Java对象数组。然后,我们遍历Java对象数组并输出每个对象的属性值。
阅读全文