У меня есть вид дерева:
public static final String CREATURES = "11";
public static final String NPC = "111";
public static final String PLAYER = "112";
public static final String OBJECTS = "12";
public static final String OBJECT = "121";
public static final String WEAPON = "1221";
public static final String SWORD = "12211";
public static final String BOW = "12213";
Это класс Type, который содержит номер типа (идентификатор):
private String identifier;
public Type(String identifier){
this.identifier = identifier;
}
И это функция для проверки, еслиType
isType чего-то:
public boolean isType(String otherIdentifier){
if(this.identifier.length() < otherIdentifier.length()) return false;
for(int i = 0; i < otherIdentifier.length(); ++i){
if(otherIdentifier.charAt(i) != this.identifier.charAt(i)){
return false;
}
}
return true;
}
//identifier and otherIdentifier are the numbers for example 112 by Player
Итак, SWORD
- это тип WEAPON
и OBJECTS
, но не тип NPC
, например.
Теперь мне нужнопроверьте, какой это тип:
public void doSomething(Type type){
if(type.isType(Type.WEAPON)){
//do something with weapon
} else if(type.isType(Type.CREATURES)){
//do something with Creature
} ...
}
Теперь мне интересно, могу ли я сделать это с помощью оператора switch
, например:
switch(type){
case .isType(WEAPON) : /* do something */ break;
case .isType(CREATURES) : /* do something */ break;
...
}
Возможно ли это, или я должен сделать это, еслиеще заявления?