2012-06-22 2 views
-1

У меня есть абстрактный класс, как этотИспользование списка метод прибудете получить Струны

public abstract class Command { 
    public abstract void execute(String keyWord[]); 
    String keyWord; 
    public Command(String keyWord) { 
     this.keyWord = keyWord; 
    } 
} 

и класс, чтобы управлять им так:

public class CommandManager { 

    private static List<Command> commands = new ArrayList<>(); 


    public static void append(Command command) { 
     commands.add(command); 
    } 

    static { 

    } 

    public static void load() { 
     append(new Command("lol") { 

      @Override 
      public void execute(Player player, String[] keyWord) { 
       System.out.println("hi"); 
      } 
     }); 
    } 

    public boolean handle() { 
     String cmd[] = input.split(" "); 
     Command command = commands.get(cmd[0].toLowerCase()); //this 
     if (command != null) { 
      command.execute(player, cmd); 
      return true; 
     } 
     return false; 
    } 

} 

Я получаю ошибку где мой комментарий. Как я могу использовать метод get для получения String из класса Command? Благодаря

+0

Я понимаю, что это Java? Если это так, вы должны пометить его как таковой. – Blorgbeard

+0

Дайте больше информации о том, что такое ошибка. –

+0

Что такое ввод? – sgowd

ответ

0

Как я могу использовать метод GET, чтобы получить строку из командной класса?

Простейшийпростой способ заключается в создании метод получения из keyWord в Command класса, а затем

commands.get(index).getKeyWord(); //this will return the string 

Здесь index представляет собой целое число, указывающее индекс переменной командного класса в списке. И не забудьте проверить значение null. Получить метод будет что-то вроде

public String getKeyWord() { 
    return this.keyWord; 
} 
+0

Ну, метод * simpleest * должен был сделать keyWord общедоступным. Никто не рекомендовал бы этого - я, конечно, не знаю, но это проще, чем геттер. –

+0

@CarlManaster Это будет проще, но не очень хорошая практика кодирования, я думаю. Обычно люди избегают этого. Таким образом, мы получаем getter как более простой и лучший способ сделать это: p –

0

команды является ArrayList и функция get() принимает в int параметра.

Eithor использует номера или используйте Map<String,Command> для вашего кода.

+0

Раньше я использовал карту, просто хотел попробовать другой подход. – user1473874

0

Я думаю, вы хотите, чтобы команда, которая имеет соответствующий ключевое слово, поэтому попробуйте следующее:

Command command = null; 
for (Command c : commands) { 
    if (c.keyWord.equalsIgnoreCase(cmd[0])) { 
     command = c; 
     break; 
    } 
} 

// command will not either be null or be the Command whose keyword matches 


P.S. Я рекомендую goolging для учебных пособий по Java и ООП.

Смежные вопросы