0

アノテーションを使用して、次のコードをより少ない繰り返しでよりきれいにすることは可能ですか? Java 8クロージャーで可能であることは知っていますが、これをJava 6/7で機能させようとしています

Variable x = new Variable(this,"HClass","HC"){
    @Override
    String getValue(Player p){
        return getHeroFromPlayer(p).getHeroClass().getName();
    }
};

Variable y = new Variable(this,"HSecClass","HSC"){
    @Override
    String getValue(Player p){
        return getHeroFromPlayer(p).getSecondClass().getName();
    }
};

Variable z = new Variable(this,"HLevel","HL"){
    @Override
    String getValue(Player p){
        return getHeroFromPlayer(p).getLevel();
    }
};

    Variable a = new Variable(this,"HMastered","HMa"){
    @Override
    String getValue(Player p){
        return getHeroFromPlayer(p).isMaster(getHeroFromPlayer(p).getHeroClass()) && (heroSClass == null || getHeroFromPlayer(p).isMaster(heroSClass))
                ? LocaleType.MESSAGE_HEROES_TRUE.getVal() : LocaleType.MESSAGE_HEROES_FALSE.getVal();;
    }
};

これはしばらく続き、すべてがマップに追加され、遅延して結果が返されます。


編集: 注釈により、次のようなことができるようになることを望んでいました

@Variable("HLevel","HL")
String getHLevel(){getHeroFromPlayer(p).getlevel();}

編集: Variable.java

abstract class Variable {
final private VariableGroup vg;
final private List<String> keys = new Vector<String>();

Variable(VariableGroup vg,String...varargs){
    this.vg = vg;
    for (String s:varargs){
        keys.add(s);
    }
}


abstract String getValue(Player p);

}

4

2 に答える 2

0

Variableクラスのコードを見ずに、何を改善できるかを判断するのは困難です。私の最初の質問は、 getValueメソッドの値を返すためだけに匿名の内部クラスを作成するのはなぜですか? 値パラメーターをコンストラクターに追加し、その値を返すようにメソッドを更新してみませんか?

于 2013-07-18T18:16:56.740 に答える