Java вспомогательный класс для динамического создания переменных-членов и методов получения - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь создать вспомогательный метод, который будет принимать имена (тип String) переменных-членов (может быть любым числом переменных-членов) и автоматически инициализировать / создавать переменные-члены, а также методы получения. , Поэтому я бы назвал что-то вроде:

helperClass("hello", "myName", "is", "bob")

и helperClass будет выглядеть примерно так:

public class helperClass { 
    helperClass(String ...a) {
        for (String s: a) 
            //create member variables and getter methods dynamically
}

Итак, в конце вызывающая функция будет выглядеть примерно так:

public class helperClass { 
    private String hello
    private String myName
    private String is
    private String bob

    //getter methods below
    ...
}

Исходя из Python, поэтому я не был уверен, выполним ли этот тип вещей в Java.

Ответы [ 2 ]

0 голосов
/ 06 июня 2019

Я думаю, что ответом является использование IDE.Все они имеют функции «добавить свойство», которые будут генерировать декларацию, и соответствующим образом именовать геттеры и сеттеры.

Если вы предпочитаете вводить свои свойства вручную, у них всех также есть генерирующие функции геттер / сеттер, которые будут смотреть на свойстваВы ввели (определите, какие геттеры и сеттеры отсутствуют) и предлагаете создать подходящие именованные геттеры и сеттеры оптом для выбранных вами.

Чтобы ответить на ваш конкретный вопрос, да, вы можете написать свой собственныйКласс, который берет список строк (то есть имен свойств) и распечатывает их как серию методов получения и установки, это базовая конкатенация строк:


  private String generateGetter(String propName) {
     return String.format("   public String get%s()\n    return this.%s;\n  }", StringUtils.capitalize(propName), propName);
  }

Чтобы преобразовать первую букву propName в верхний регистр(соглашение о методах получения и установки, вы можете сделать это самостоятельно или использовать утилиты строки Apache .

0 голосов
/ 06 июня 2019

Да. Вы можете создавать методы получения и установки динамически. Учебник по созданию динамического POJO в Java . Но этот метод будет включать в себя создание предопределенной строки, которая содержит объявление метода.

Например: String s = "public void doSonething (String ... args) {// Тело функции}". Затем вы можете преобразовать эту строку в функцию во время выполнения. Исходя из ваших потребностей, вы можете определить пользовательскую строку, которая содержит объявление метода, которое вам нужно. Посмотрите некоторые примеры в приведенной выше учебной ссылке.

...