Включить автоматически сгенерированные методы в класс Java - PullRequest
1 голос
/ 10 февраля 2012

У меня есть вопрос, на который я не уверен, что можно ответить.

У меня есть php-скрипт на сервере, который автоматически генерирует java-метод на основе содержимого таблицы в базе данных MySQL.Сценарий создает файл .java, в котором сохраняется этот метод.

Затем я загружаю этот метод, копирую и вставляю метод в мой основной класс Java.Я думаю, что это ненужный шаг.Есть ли способ включить метод в класс Java, а не копировать и вставлять.

Я хочу написать ссылку на файл method.java в той точке класса java, где метод должен быть скопирован и вставлен.

Что-то вроде:

    public class ShowAlert {
            public void showAlert(String toast) throws IOException {
    System.out.println("alert = "+externalMethod());
    }

    include(externalMethod.java);

}

, а затем externalMethod.java имеет

public String externalMethod(){
return "hello world";
}

Я не уверен, возможно ли это, но было бы здорово, если бы это было.

Ответы [ 4 ]

2 голосов
/ 10 февраля 2012

В Java нет функции "включить файл".Я предлагаю вместо этого сгенерировать:

public class GeneratedClass {    
    public static String externalMethod(){
        return "hello world";
    }
}

и назвать его так:

GeneratedClass.externalMethod();

Таким образом, рукописный файл и созданный файл могут быть полностью разделены.

1 голос
/ 10 февраля 2012

В идеале вы должны хранить сгенерированный код и написанный вручную код в отдельных файлах. Таким образом, вам не придется делать то, что вы делаете. Используйте предложение Aasmund. Это правильный путь. Возможно, вам придется реструктурировать свой код, чтобы разрешить это, но лучше сейчас, чем позже.

Я бы попросил вас пройти лишнюю милю и использовать интерфейсы. Ваш сгенерированный код должен реализовывать интерфейс, а ваш ручной код должен ссылаться на все, используя только интерфейс. У вас может быть Фабрика, которая возвращает экземпляр.

Это позволит вам увеличить степень разделения ручного кода и сгенерированного кода. Я думаю, что вы в некоторой степени используете шаблон DAO (объект доступа к данным). Шаблон DAO работает лучше всего, если вы храните сгенерированный код отдельно и обращаетесь к нему с помощью интерфейсов. Использование интерфейсов позволит вам изменить реализацию DAO на что-то другое во время выполнения - например, запустить модульные тесты.

1 голос
/ 10 февраля 2012

Вы должны рассмотреть возможность использования чего-то вроде Java ScriptEngine (описано в JSR 223). Примеры можно найти здесь .

Существуют также интеграции LUA для Java.

0 голосов
/ 10 февраля 2012

Вы можете использовать шаблонизатор PHP, такой как Smarty , чтобы создать свой полный класс Java. Ваш основной класс будет вашим шаблоном с заполнителем для сгенерированного метода.

...