0

クラスのデザインは次のとおりです:http://pastebin.com/1RSdmtXi

クラスExpectのみAに配置する場合は、Aのゲッターとセッターのみ、またはVica veraからBのみを表示したいと思います。とを入力するAB、すべてのゲッターとセッターが表示されます。

したがって、唯一の例A

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

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

このために別の設計をアドバイスすることができます。

4

3 に答える 3

1

なぜこれが必要なのですか?

Expect(削除フィールドを追加して)クラスを変更すると、ゲッターとセッターも追加および削除できます。

クライアントクラスを変更および再コンパイルせずにクラスを変更する場合は、必要なすべてのメソッドを含むインターフェイスを定義し、クラスごとに実装しますExpect。メソッドを削除する代わりに、(本体なしで)空のメソッドにするだけです。

このパターンにより、コンパイル時のチェックを使用せず、通常のメソッド呼び出しにダーティリフレクションを使用する必要がなくなります。

于 2013-02-10T12:36:19.257 に答える
1

これを使用してみてください:

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

ただし、アーキテクチャを変更することをお勧めします。

于 2013-02-10T12:08:40.457 に答える
0

クラスExpectには、getA()、setA、getB、およびsetBのみが必要であり、AおよびBの属性のすべてのゲッターおよびセッターが必要なわけではありません。それらはそれらのクラスに属しています。

于 2013-02-10T12:03:16.303 に答える