有一个电脑类和手机类都有一个brand属性,在工厂类的静态方法中,传入反射对象及属性值,灵活获取到对应的实体对象,返回的对象中包含属性值
时间: 2024-02-06 13:09:43 浏览: 59
好的,我可以为你提供一个示例代码,来演示如何使用反射获取对象的属性值:
首先我们需要定义两个类,一个是电脑类,另一个是手机类:
```java
public class Computer {
private String brand;
public Computer() {
}
public Computer(String brand) {
this.brand = brand;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
}
public class Phone {
private String brand;
public Phone() {
}
public Phone(String brand) {
this.brand = brand;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
}
```
然后我们再定义一个工厂类,其中包含一个静态方法,用于根据传入的反射对象及属性值,灵活获取到对应的实体对象:
```java
public class Factory {
public static <T> T create(Class<T> clazz, String fieldName, Object fieldValue) {
try {
T obj = clazz.newInstance();
Field field = clazz.getDeclaredField(fieldName);
field.setAccessible(true);
field.set(obj, fieldValue);
return obj;
} catch (InstantiationException | IllegalAccessException | NoSuchFieldException e) {
e.printStackTrace();
}
return null;
}
}
```
最后,我们可以在 main 方法中测试一下这个工厂类的使用:
```java
public static void main(String[] args) {
Computer computer = Factory.create(Computer.class, "brand", "Dell");
System.out.println(computer.getBrand());
Phone phone = Factory.create(Phone.class, "brand", "iPhone");
System.out.println(phone.getBrand());
}
```
输出结果为:
```
Dell
iPhone
```
这样,我们就可以通过反射机制来灵活地获取到对象的属性值了。
阅读全文