看下面的代码.似乎有更简单的方法来做到这一点.
对于Class
我想要添加到系统的每个新内容,我必须执行以下操作才能设置类变量(static - > maxPlayers)?
像抽象静态变量?
protected abstract class Class{
protected abstract int getMaxPlayers();
public class Soldier extends Class{
public static final int maxPlayers = 4;
@Override
protected int getMaxPlayers() {
return Soldier.maxPlayers;
}
}
public class Demoman extends Class{
public static final int maxPlayers = 2;
@Override
protected int getMaxPlayers() {
return Demoman.maxPlayers;
}
}
public class Scout extends Class{
public static final int maxPlayers = 4;
@Override
protected int getMaxPlayers() {
return Scout.maxPlayers;
}
}
public class Medic extends Class{
public static final int maxPlayers = 2;
@Override
protected int getMaxPlayers() {
return Medic.maxPlayers;
}
}
}
Run Code Online (Sandbox Code Playgroud)
它就像我必须重复这个模板:
public static final int maxPlayers = 2;
@Override
protected int getMaxPlayers() {
return Medic.maxPlayers;
}
Run Code Online (Sandbox Code Playgroud)
我认为这样做是不正确的.
Roh*_*ain 11
首先,你不应该为你的班级命名Class
(甚至不是例子).选择一个更好的名字.
其次,这似乎是你真正需要的枚举:
public enum Army {
SOLDIER(4),
DEMOMAN(2),
SCOUT(4),
MEDIC(2);
private final int maxPlayers;
private Army(int maxPlayers) {
this.maxPlayers = maxPlayers;
}
public int getMaxPlayers() {
return maxPlayers;
}
}
Run Code Online (Sandbox Code Playgroud)