编写JavaBean类的正确规则是什么?

我很困惑,因为有些书必须使用,而其他用户应该或可以描述
写作规则:

IE。

  • 一个bean类必须实现Serializable还是应该?
  • 实例变量必须是私有(private)的还是应该是?
  • 最佳答案

    JavaBean是由其属性(即其getter和setter方法)而不是其字段定义的。尽管这些术语可以互换使用,但这实际上是不正确的。 Introspector 机制完全忽略字段。

    示例

    使用这个(经过精心设计的)Javabean:

    public class TestBean {
        private int baz;
        private char[] phleem;
    
        public String getFoo() {
            return new String(phleem);
        }
        public void setFoo(final String foo) {
            this.phleem = foo.toCharArray();
        }
        public long getBar() {
            return baz;
        }
        public void setBar(final long bar) {
            this.baz = (int) bar;
        }
    }
    

    您会认为这些属性是:
  • “baz”(int)
  • “phleem”(char[])

  • 但是现在让我们用Javabeans内省(introspection)器来检查它:
    for (PropertyDescriptor descriptor : Introspector
            .getBeanInfo(TestBean.class, Object.class)
            .getPropertyDescriptors()) {
        System.out.println("Name: " + descriptor.getName() +
                         ", type: " + descriptor.getPropertyType());
    }
    

    这是输出:
    Name: bar, type: long
    Name: foo, type: class java.lang.String
    

    结论:

    getter和setter是定义Javabeans属性的对象。按照惯例,它们由相同名称和类型的字段支持,但是这些字段实际上并不是Javabean属性的一部分(尽管许多文档会另外建议)。

    在重新阅读我的答案时:它是对其他答案的补充。如果您想得到一个简短的答案,请使用skaffman的答案。

    关于java - JavaBean类规则,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5935226/

    10-12 02:41