2013-02-10 109 views
0

這裏是一個一流的設計:http://pastebin.com/1RSdmtXiJava類的設計問題

如果我只放A類Expect是我想看到的只是A的getter和setter方法,或VICA蘆薈到B.​​如果放在AB,那麼所有的getter和setter都應該是可見的。

所以只A一個例子:

A[] aExampe = {new A("Tim",1)}; 
Expect exp = new Expect(aExampe); 

exp.getA(); --> visible 
exp.getB(); --> not visible 

您可以指點另一設計這一點。

+1

肯定是這個問題 - 壞建築的後果 – bsiamionau 2013-02-10 12:08:09

回答

0

在課上期望你應該只有getA(),setA,getB和setB,而不是A和B屬性的所有getter和setter。那些屬於這些類別。

1

嘗試使用這樣的:

Expect.class.getMethod("getA", null).setAccessible(true); 
Expect.class.getMethod("getB", null).setAccessible(false); 

但我建議你改變你的架構。

1

爲什麼這是一個需求?

如果更改類Expect(通過添加刪除字段),您也可以添加和刪除getter和setter。

如果您想更改類而不修改和重新編譯客戶端類,請定義一個包含所有需要的方法的接口,並通過Expect類實現它,而不是刪除方法,只需將它們設置爲空方法(不帶任何主體)。

通過這種模式,您不會使用編譯時檢查,並且不需要對常規方法調用使用髒反射。