有一个电脑类和手机类都有一个brand属性,在工厂类的静态方法中,传入反射对象及属性值,灵活获取到对应的实体对象,返回的对象中包含属性值
时间: 2024-02-06 18:09:41 浏览: 60
可以通过以下步骤实现:
1. 定义一个电脑类和一个手机类,它们都具有一个brand属性:
```java
public class Computer {
private String brand;
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
}
public class Phone {
private String brand;
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
}
```
2. 定义一个工厂类,其中包含一个静态方法,该方法接受一个反射对象和属性值作为参数,并返回一个包含该属性值的实体对象:
```java
import java.lang.reflect.Field;
public class Factory {
public static Object createInstance(Class<?> clazz, String fieldName, Object value) throws Exception {
Object instance = clazz.newInstance();
Field field = clazz.getDeclaredField(fieldName);
field.setAccessible(true);
field.set(instance, value);
return instance;
}
}
```
3. 在测试代码中使用工厂类创建电脑和手机对象,并设置它们的brand属性:
```java
public class Test {
public static void main(String[] args) throws Exception {
Computer computer = (Computer) Factory.createInstance(Computer.class, "brand", "Lenovo");
System.out.println(computer.getBrand()); // 输出:Lenovo
Phone phone = (Phone) Factory.createInstance(Phone.class, "brand", "Apple");
System.out.println(phone.getBrand()); // 输出:Apple
}
}
```
通过反射和工厂类,我们可以灵活地创建包含指定属性值的实体对象,从而提高代码的复用性和灵活性。
阅读全文