草庐IT

Java Bean : What am I missing?

coder 2023-08-27 原文

我想知道我是否遗漏了一些关于 Java Bean 的信息。我喜欢我的对象在构造函数中尽可能多地进行初始化,并且具有最少数量的增变器。 Beans 似乎直接反对这一点,并且通常感觉笨重。如果不将我的对象构建为 Bean,我会错过哪些功能?

最佳答案

听起来您的方向是正确的。不是您错过了 Java Beans 的要点,而是其他程序员在滥用它们。

Java Beans 规范旨在与可视化工具一起使用。这个想法是,应用程序设计者将能够以交互方式配置对象的实例,然后序列化(或生成代码)配置的 bean,以便它可以在运行时重建;目的是它不会在运行时发生突变。

不幸的是,很多开发人员不理解 accessors violate encapsulation .他们使用结构而不是对象。他们看不出其他类有什么问题,甚至其他包也依赖于一个类的数据成员。

当然,您通常需要配置对象的实例。只是这应该通过某种配置功能来完成。这可能是依赖项注入(inject)容器、“BeanBox”样式的可视化工具,或者只是读取您手写的 JSON、XML 或属性文件。关键是在运行时这些对象实际上是不可变的;客户只是调用他们的操作,他们不访问他们的属性。

关于Java Bean : What am I missing?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/315142/

有关Java Bean : What am I missing?的更多相关文章

  1. java - 将 javabean 的图形序列化为 xml,每个 java 实例都有单独的 xml 文件 - 2

    您能否推荐一个框架或工具,可以将javabean图形序列化为xml,每个java实例都有单独的xml文件?我设法找到serialzie到单个文件的所有javaxml工具,但我需要它们是分开的,例如:型号:classA{Bb;}classB{}Aa=newA();a.b=newB();序列化为:a.xml:somehowreftobb.xml最好的问候,ebu。 最佳答案 您可以使用JAXB和XmlAdapter来执行如下操作:一个importjava.util.ArrayList;importjava.util.List;impor

  2. java - 使用来自 JavaBean 的数据填充 JSP 页面中的复选框 - 2

    我在HTML表单中有一个带有复选框的JSP页面,如下所示现在,在编辑用户技能时,我想从表格中获取逗号分隔的值并填充JSP中的复选框。以下代码从数据库表中获取CSV技能。ListSkills=newArrayList();pstmt=(PreparedStatement)conn.prepareStatement(strSQL);rs=pstmt.executeQuery();StringstrSkills=rs.getString("Skills");Listitems=Arrays.asList(strSkills.split("\\s*,\\s*"));objUserDetails

  3. java - 我如何断言两个具有 Javabean 值的 HashMap 相等? - 2

    我有两个HashMap我想比较的map。Question在本例中是我编写的Javabean。我如何断言HashMap是平等的吗?在这种情况下,相等意味着HashMap包含完全相同的Questionbean?如果它完全相关,我正在使用JUnit编写单元测试。 最佳答案 使用Guava,您可以:assertTrue(Maps.difference(expected,actual).areEqual()); 关于java-我如何断言两个具有Javabean值的HashMap相等?,我们在Sta

  4. java - 为什么 "has"不是有效 JavaBean 方法签名的开头? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。JavaBeans方法的签名必须遵循某些约定,例如set.../get...等。他们有一个关于is的约定...例如isEven()可以是Integer类测试boolean值的方法。但是后来我想知道为什么没有...也是一个合法的标识符,因为对我来说测试某物有什么是有意义的,例如hasCar()用于Person类或类似的。你明白我的问题了吗?你怎么看?

  5. java - 从 javabean 类更新数据库是否合适? - 2

    一些背景知识:我正在创建某种游戏。在该游戏中,玩家可以拥有一座房子。房子可能包含家具对象,并且这些家具可能设置了自定义纹理。一件家具可能包含不同数量的纹理。一件家具有几个用于纹理的插槽(0-x)。房子类:publicclassHouse{privateListfurniture;publicHouse(){furniture=newArrayList();}publicListgetFurniture(){returnfurniture;}publicvoidaddFurniture(Furniturefurniture){furniture.add(furniture);}}家具类:

  6. java - Model、javabean、POJO的区别 - 2

    我开始用spring学习MVC。我听过很多次Bean,它包含setter和getter。Model基本上是数据流动的对象,而Pojo与Bean相同。但我真的对这个术语感到困惑,所有这些对我来说都是一样的,你能解释一下它们之间的确切区别吗?JavaBEANPOJO型号 最佳答案 如果您使用的是MVC架构,那么模型代表您的领域:表示您的实体,它不是与Java相关的术语。您的模型在Java中表示为JavaBeans(JavaEE中的最佳实践)。JavaBean是一个普通的Java类,它实现了Serializable接口(interface

  7. java - 使用 Google Guava 过滤 JavaBean 列表 - 2

    在Java程序中,我有一个要根据特定属性过滤的bean列表。例如,假设我有一个Person列表,一个JavaBean,其中Person有许多属性,其中包括'name'。我还有一个名字列表。现在我要查找姓名在名单中的所有人员。使用GoogleGuava执行此过滤器的最佳方法是什么?到目前为止,我一直在考虑将Guava与Apachebeanutils结合起来,但这似乎并不优雅。我还在这里找到了一个反射扩展库:http://code.google.com/p/guava-reflection/,但我不确定如何使用它(文档很少)。有什么想法吗?附言你能说我真的很怀念Python列表理解吗?

  8. java - 使用 Google Guava 过滤 JavaBean 列表 - 2

    在Java程序中,我有一个要根据特定属性过滤的bean列表。例如,假设我有一个Person列表,一个JavaBean,其中Person有许多属性,其中包括'name'。我还有一个名字列表。现在我要查找姓名在名单中的所有人员。使用GoogleGuava执行此过滤器的最佳方法是什么?到目前为止,我一直在考虑将Guava与Apachebeanutils结合起来,但这似乎并不优雅。我还在这里找到了一个反射扩展库:http://code.google.com/p/guava-reflection/,但我不确定如何使用它(文档很少)。有什么想法吗?附言你能说我真的很怀念Python列表理解吗?

  9. java - JRBeanCollectionDataSource : How to show data from the java. util.List 来自 JavaBean? - 2

    我的JavaBean包含java.util.List。Userinfo{privateStringusername;privateStringpassword;ListlistAddress;}如何在Detail波段显示这个List的数据? 最佳答案 这是工作示例。本示例的要点:使用_THIS表达式;在Detail带中使用List(jr:list)组件生成报告的代码片段:publicstaticvoidtestBuildPdf(){try{Mapparams=newHashMap();JasperReportjasperReport

  10. java - JRBeanCollectionDataSource : How to show data from the java. util.List 来自 JavaBean? - 2

    我的JavaBean包含java.util.List。Userinfo{privateStringusername;privateStringpassword;ListlistAddress;}如何在Detail波段显示这个List的数据? 最佳答案 这是工作示例。本示例的要点:使用_THIS表达式;在Detail带中使用List(jr:list)组件生成报告的代码片段:publicstaticvoidtestBuildPdf(){try{Mapparams=newHashMap();JasperReportjasperReport

随机推荐