アノテーションを使用して、次のコードをより少ない繰り返しでよりきれいにすることは可能ですか? 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);
}