2. 有一个电脑类和手机类都有一个brand属性,在工厂类的静态方法中,传入反射对象及属性值,灵活获取到对应的实体对象,返回的对象中包含属性值
时间: 2024-02-06 07:09:52 浏览: 74
可以通过以下代码实现:
```java
public class Computer {
private String brand;
public void setBrand(String brand) {
this.brand = brand;
}
public String getBrand() {
return brand;
}
}
public class Phone {
private String brand;
public void setBrand(String brand) {
this.brand = brand;
}
public String getBrand() {
return brand;
}
}
public class Factory {
public static <T> T create(Class<T> clazz, String brand) {
try {
T obj = clazz.newInstance();
Method setBrand = clazz.getMethod("setBrand", String.class);
setBrand.invoke(obj, brand);
return obj;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
// 使用示例
Computer computer = Factory.create(Computer.class, "Lenovo");
System.out.println(computer.getBrand());
Phone phone = Factory.create(Phone.class, "Apple");
System.out.println(phone.getBrand());
```
在工厂类的静态方法 `create` 中,通过传入的 `Class` 对象创建实例,然后通过反射获取对应的 `setBrand` 方法,并调用该方法设置属性值。最后返回创建好的实例对象。
阅读全文