Мне интересно, есть ли способ связать значение массива с определенным методом.
Вы можете использовать отражение для генерации массива методов.Тем не менее, это «не идеальное решение», потому что оно затруднит поддержку вашего кода.Итак, я должен сказать, что это нехорошая практика, но вот она.
package methodarray;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class MethodArray {
public static void main(String[] args) {
Method[] arrayOfMethods = new Method[100];
try {
//...You will need to add the methods by their name, you can use for loops to add them quickly
arrayOfMethods[1] = MethodArray.class.getDeclaredMethod("someMethodName");
arrayOfMethods[2] = MethodArray.class.getDeclaredMethod("someOtherMethod");
//...
} catch (NoSuchMethodException | SecurityException ex) {
//this can throw an Exception if the method is not found, handle it here
}
//now to call a method from the array just do
try {
arrayOfMethods[1].invoke(MethodArray.class);
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) {
//...handle exceptions
}
}
public void someMethodName(){
//...logic
}
public void someOtherMethod(){
//...logic
}
}
Это поможет вам вызывать методы так, как вы хотите, но имейте в виду, что для безопасности java может вызвать несколько ожиданий, когдаиспользуя отражение.Чтобы отправить дополнительные аргументы, просто наберите arrayOfMethods[n].invoke(MethodArray.class, args[]);
Этот вопрос в основном относится к Java, но если он работает для всех языков объектно-ориентированного программирования, тогда это хорошо.
ДляПри решении этих общих сценариев мы используем Шаблоны проектирования , шаблоны - это проверенные решения для общих сценариев.Все ответы о том, что вы должны «использовать интерфейс», на самом деле пытаются помочь вам в достижении этого, шаблон, который вы можете использовать, называется Command Pattern
, вы можете прочитать об этом здесь .Понимание или чтение шаблона может быть бесполезным, поскольку вы сказали, что не знакомы с использованием интерфейсов.(Лично я всегда рекомендую Head First Design Patterns
как вводную книгу по шаблонам.)
Как только вы поймете шаблон команд, вы можете просто сгенерировать массив команд, это лучшее ОО-решение, имейте это в виду.Я не буду приводить пример, потому что я думаю, что это трудно понять, если у вас нет четкого представления о том, как использовать интерфейсы, прочитайте о них, это будет стоить того! *