Java与JavaScript getter和setters方法

时间:2013-07-11 09:46:24

标签: java javascript callback closures

有时当我有一些具有大量属性的对象(例如30-40)时,编写getter和setter方法真的很烦人,所以在javascript中我会这样做:

function SomeObject( properties ) 
{ 
   // Iterate through the properties of the object, and make sure 
   // that it's properly scoped.
   for ( var i in properties ) 
   { 
       (function(){ 
        // Create a new getter for the property 
        this[ "get" + i ] = function() 
        { 
           return properties[i]; 
        };
        // Create a new setter for the property 
        this[ "set" + i ] = function(val) 
        { 
           properties[i] = val; 
        }; 
    })(); }
 }

所以我只是想知道是否有可能在JAVA中做这样的事情?

5 个答案:

答案 0 :(得分:3)

代码生成注释可以在Java中执行此类操作。您可能需要查看Project Lombok

相关,我认为:Using Java Annotations - Generating Code

答案 1 :(得分:1)

在Eclipse中:

Rightclick - >来源 - >生成Getters和Setter

还有其他很好的生成器,例如,构造函数,hashCode / Equals。

所有常见的IDE都具有这样的功能,可以节省很多的时间。

答案 2 :(得分:1)

假设我给你一个30-40个吸气/安装者的课程。使用时你会有什么感受? 我不认为在一个班级中拥有30-40个getter / setter是个好主意。 而是通过子类化属性来打破/分配类

您从javascript提供的示例是一个非常好的示例。关于如果我们在一个类中有这么多属性我们应该如何访问。在javascript中,您可以像地图一样使用对象。

如果我有30/40吸气剂设定器的要求,我会应用相同的想法。

即我要使用java.util.Properties

或制作我的自定义类

  //Only if you have 30/40 properties
  class MyClass {

       private Map<String, Object> data = new ConcurrentHashMap<String,Object>();

       public void set(String fieldName, Object value) {
               data.put(fieldName, value);
       }

       public Object get(String fieldName) {
               return data.get(fieldName);
       }

   }

答案 3 :(得分:0)

在Eclipse中,您可以使用“Source&gt; Getter和Setter”功能,并自动将您的代码添加到您想要的所有setter和getter中!

答案 4 :(得分:0)

也许尝试提升和Spring Roo一样:

@RooJavaBean
public calss SimpleClass {
    private Attr1 attr1;
    private Attr2 attr2;

} 

Tutor