функция в случае состояния - PullRequest
0 голосов
/ 30 мая 2018

У меня есть вид дерева:

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

Возможно ли это, или я должен сделать это, еслиеще заявления?

1 Ответ

0 голосов
/ 30 мая 2018

Поддерживается только константа

Вам просто нужно прочитать официальный документ здесь: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

Переключатель работает с примитивными байтами, короткими, символами и intтипы.Он также работает с перечисляемыми типами (обсуждается в Enum Types), классом String и несколькими специальными классами, которые заключают в себе определенные примитивные типы: Character, Byte, Short и Integer (обсуждаемые в Numbers и Strings).

...