0

这是一个类设计: http: //pastebin.com/1RSdmtXi

如果我只放入A类 Expect 我希望只看到 A 的 getter 和 setter,或者 B 的 vica vera。如果放入Aand B,那么所有的 getter 和 setter 都应该是可见的。

因此,仅举一个例子A

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

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

您可以为此建议另一种设计。

4

3 回答 3

1

尝试使用这个:

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

但我建议你改变你的架构。

于 2013-02-10T12:08:40.457 回答
1

为什么这是一个需要?

如果您更改类Expect(通过添加删除字段),您也可以添加和删除 getter 和 setter。

如果您想在不修改和重新编译客户端类的情况下更改类,请定义一个包含所有需要的方法的接口,按Expect类实现它,而不是删除这些方法,只需将它们设为空方法(没有任何主体)。

通过这种模式,您将不会使用编译时检查,也不需要对正常的方法调用使用脏反射。

于 2013-02-10T12:36:19.257 回答
0

在 Expect 类中,您应该只有 getA()、setA、getB 和 setB,而不是 A 和 B 属性的所有 getter 和 setter。那些属于那些类。

于 2013-02-10T12:03:16.303 回答