写一个方法:
public void (类,参数1,参数2) {
}
调用这个方法的类是各个不同的类,但是这些类中都有一个公共的属性isTm,想把这个函数定义成公共的。不同的类传进来,可以根据不同的类,来设置属性isTm的值,应该如何设计和实现?
举例如下:
package basic;
public class Test {
public void updateIsTm(T<? extends Object> pojo) {
if (null != pojo) {
// TODO
//如果传进来的是A a对象,就调用a.setIsTm()方法,修改值。
//如果传进来的是B b对象,就调用b.setIsTm()方法,修改值。
}
}
}
//类A和类B有公共的属性isTm
class A {
String a;
String isTm;
public String getIsTm() {
return isTm;
}
public void setIsTm(String isTm) {
this.isTm = isTm;
}
}
class B {
String b;
String isTm;
public String getIsTm() {
return isTm;
}
public void setIsTm(String isTm) {
this.isTm = isTm;
}
}
谢谢~~
設計一個介面,讓要呼叫這個函數的類別都實作這個介面
補充:
如果不修改調用這個函數的類,做無侵入式設計的話,估計只能用反射了
這樣的話就得靠約定來保證調用的安全性了,不建議這麼做
輸出結果:
從題目來看,沒看出有泛型設計的必要。
從設計上來說,設計一個介面或抽象類別將isTm這個屬性抽像出來比較好。
但如果這些類別你已經沒辦法去修改,而他們之間也沒有繼承或實現共同的父類或接口,那就只能用反射了。
但用反射的話,會讓程式碼變得很不堪,出問題也不好找,用得不好屬於埋雷行為。