Доступ к non-visible классу :)

287
12 апреля 2018, 14:42

Ниже представлен код, выполнение которого ругается на то, что я вызываю .newInstance() для класса, который в данном пакете не виден. Я там смоделировал то, чего хочется: типа .setVilible("public").
Вопрос: Как избежать эксэпшэна?

В одном пакете:

package a;
import b.Creator;
public class A {
    public static void main(String[] args){
        B b = Creator.next(B.class);
        System.out.println(b);
    }
}
class B {
}

В другом пакете:

package b;
public class Creator {
    public static <T> T next (Class<T> clazz){
        try {
            clazz.setVisible("public");  // вымышленная строка
            clazz.getDeclaredConstructor().setAccessible(true);
            return clazz.newInstance();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

Замечание: не нужно выворачивать условия вопроса, предлагать объявить класс B как public в отдельном файле и всё такое. Нужно конкретно в заданных условиях создать экземпляр класса B внутри метода класса Creator.

READ ALSO
Переписать с си на Java [требует правки]

Переписать с си на Java [требует правки]

Есть код формирования сетевого пакета на си необходимо составить на javaНо плохо владею си

284
Уравнение из массива чисел

Уравнение из массива чисел

Пользователь вводит числа и скобки через пробел (на каждую открытую скобку всегда есть закрытая)Например 18 7 ( 5 3 ) 2

283
Белый лист для Таск Менеджера

Белый лист для Таск Менеджера

ЗдравствуйтеВ некоторых приложениях существуют кнопки, которые отправляют тупых юзеров на нужную страницу в настройках конкретного приложения...

278
Быстрый thread pool для бенчмарков

Быстрый thread pool для бенчмарков

Мне необходимо в бенчмарке выполнять некоторые операции в другом потоке, для того что бы их не создавать каждый раз, я хочу иметь трэд пул...

264