Импорт пакетов, с имени пакета по шаблону

173
27 августа 2018, 05:20

Есть пакет: net.minecraft.server.**v1_12_R1**.DedicatedServer Но проблема в том, что в каждой версий ядра, v1_12_R1 меняется на что-то другое, но сама структура дальше одинаковая. То есть, мне нужно импортировать пакет, по такому шаблону: net.minecraft.server.*.DedicatedServer

Скорее всего такое не возможно в Java, но всё же, вдруг.

Спасибо!

Answer 1

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

public void onLoad() {
    try {
        String packageName = getServer().getClass().getPackage().getName();
        Class<?> minecraftServerClass = Class.forName(packageName + ".MinecraftServer");
        Method getServer = minecraftServerClass.getMethod("getServer");
        Object dedicateServer = getServer.invoke(minecraftServerClass);
        Field propertyManagerField = dedicateServer.getClass().getField("propertyManager");
        Object propertyManager = propertyManagerField.get(dedicateServer);
        Method setProperty = propertyManager.getClass().getMethod("setProperty", String.class, boolean.class);
        setProperty.invoke(propertyManager, "enable-query", false);
    } catch(SecurityException | ReflectiveOperationException ex) {
        // TODO replace with proper logger or error handling
        ex.printStackTrace();
    }
}

Это был прямой перевод вашего кода без оптимизации. Если же getServer возвращает экземпляр DedicateServer, то первые четыре строки сводятся к одной:

Object dedicatedServer = getServer();
READ ALSO
Android studio - edittext

Android studio - edittext

Нужно сделать EditText таким, чтобы он был многострочным, но при этом в длину был "бесконечным"

178
android = Подскажите почему при использование TextView закрывается приложение

android = Подскажите почему при использование TextView закрывается приложение

При использовании in и out в классе MainActivity приложение закрываетсяЕсли использовать их напрямую в методе OnCreate () всё работает, но когда используется...

170
Тетрис libgdx падения фигур

Тетрис libgdx падения фигур

Как сделать так чтобы фигуры тетриса опускались вниз с использованием libgdx Eclipse? Фигурки сами рендерятсяНо двигаться вниз не желают

163
Вывод чисел Каталана

Вывод чисел Каталана

Вопрос про вывод чисел КаталанаКод написан для решения вот этой задачи Правильная скобочная последовательность

210