-1

多くの属性 (たとえば 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でこのようなことをすることが可能かどうか疑問に思っていますか?

4

5 に答える 5

3

コード生成アノテーションは、Java でこの種のことを行うことができます。Project Lombokをご覧ください。

関連すると思います:Javaアノテーションの使用 - コードの生成

于 2013-07-11T09:49:19.320 に答える
1

30 ~ 40 のゲッター/セッターを含むクラスを提供するとします。使用中はどのように感じますか。1 つのクラスに 30 ~ 40 のゲッター/セッターを配置するのは良い考えではないと思います。むしろ、プロパティをサブクラス化してクラスを分割/配布します

あなたがjavascriptから与えた例は、非常に良い例です。1 つのクラスに非常に多くのプロパティがある場合にアクセスする方法について。JavaScript では、Map のようなオブジェクトを踏むことができます。

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);
       }

   }
于 2013-07-11T10:52:38.260 に答える
1

エクリプスでは:

右クリック -> ソース -> ゲッターとセッターの生成

コンストラクター用の hashCode/Equals など、他の優れたジェネレーターもあります。

すべての一般的な IDE にはこのような機能があり、時間を大幅に節約できます。

于 2013-07-11T09:50:03.050 に答える
0

Eclipse では、「ソース > ゲッターとセッター」機能を使用でき、必要なすべてのセッターとゲッターが自動的にコードに追加されます。

于 2013-07-11T09:48:58.720 に答える