Jer*_*ell 7 java reflection javabeans
我不太了解Java Bean的本质.好吧,至少我是如何看待它们在一些通过我们商店的代码库中使用的.
我发现了这个问题:
那里接受的答案让程序员看起来像是在滥用Java Bean(我真的不怀疑),但是我觉得这种情况经常发生,故意,我想我还是会遗漏一些东西.
我看到的代码如下:
public class FooBean {
private int a;
private int b;
private int c;
public int getA() { return a; }
public int setA(int x) { a = x; }
// etc...
}
Run Code Online (Sandbox Code Playgroud)
没有进一步的结构或控制比吸气剂和制定者.是否存在某种超级棒的编译器技巧,包括反射,getter和setter,以及是否需要一些非常笨拙(但编译器优化)的静态关联数组?
或许我完全忽略了这一点.:\
干杯!
编辑:
绝对不是在这里宣传公共领域的想法.
实际上,是的,有魔法在继续.
这是一个非常愚蠢的模式,但GUI bean(所有组件都是)旨在由GUI构建器进行反射分析.公共集/获取字段旨在成为用户在构建GUI时可以使用的"属性".
编辑:为了防御太阳,我应该说尽管这个模式非常令人讨厌,因为所有人都复制了它并开始在整个非bean代码中使用它,它确实允许人们将类与GUI构建器集成不使用任何外部元数据.您不需要编辑器的任何XML文件或属性文件,它就像扩展Button并将新对象放到托盘上一样简单.
这种模式已在其他地方使用,正如您所注意到的,它与拥有公共字段几乎相同.我认为这是设置java时创建的最糟糕的模式之一,但没有其他明显的解决方案(我认为整个概念是由第一批尝试在java发布之前构建第一个GUI构建器的人所强调的).
现在有一个更好的解决方案:使用注释标记私有字段,反射工具仍然可以分析它们并将它们绑定到构建器控件.这将是一个很好的清洁工具,并不会使所有对象都容易受到外部状态变化的影响.