Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 Полный путь к классу по его названию  [new]
Molasar
Member

Откуда:
Сообщений: 541
Всем привет!

Есть класс-фабрика, с методом принимающим String с именем класса, который необходимо возвратить.

Как можно программно узнать путь к классу с именем senderClassName, чтобы убрать уродливое "com.example."?
public class SenderFactory {

    public Sender getSender(String senderClassName) {       
        try {
            Class senderClass = Class.forName("com.example." + senderClassName);
            return (Sender) senderClass.newInstance();     
        } catch (InstantiationException | IllegalAccessException | ClassNotFoundException ex) {
            Logger.getLogger(SenderFactory.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }
    }
    
}
12 фев 19, 10:28    [21807110]     Ответить | Цитировать Сообщить модератору
 Re: Полный путь к классу по его названию  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 36512
Molasar,

Имхо совсем не уродливо. Замени константой.
12 фев 19, 10:31    [21807115]     Ответить | Цитировать Сообщить модератору
 Re: Полный путь к классу по его названию  [new]
Molasar
Member

Откуда:
Сообщений: 541
Вообще возможно узнать путь к классу только по его названию без сложных переборов папок?

Petro123
Molasar,

Имхо совсем не уродливо. Замени константой.
12 фев 19, 10:42    [21807124]     Ответить | Цитировать Сообщить модератору
 Re: Полный путь к классу по его названию  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 36512
Molasar
без сложных переборов папок?

https://stackoverflow.com/questions/3188156/difference-between-classes-and-namespaces
Это же не пути а namespase IMHO.
Кинь все классы парсера в одну папку.
12 фев 19, 10:50    [21807136]     Ответить | Цитировать Сообщить модератору
 Re: Полный путь к классу по его названию  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 4785
Molasar, как вы можете узнать имя класса без пакета, где он(класс) находится, при условии, что в разных пакетах могут располагаться классы с одинаковым именем?

Передавайте либо пакет+класс, либо ИмяВашегоКласс.class.


p.s. По-моему, через всю эту ерунду проходят все начинающие явисты...лучше сразу забить делать это. Какая такая задача заставляет вас таки "криво" делать инстансы классов?
12 фев 19, 11:07    [21807161]     Ответить | Цитировать Сообщить модератору
 Re: Полный путь к классу по его названию  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 36512
Озверин
классы с одинаковым именем
+1 Тоже об этом подумал.
12 фев 19, 11:27    [21807182]     Ответить | Цитировать Сообщить модератору
 Re: Полный путь к классу по его названию  [new]
Molasar
Member

Откуда:
Сообщений: 541
Задача - создать универсальную фабрику без if и switch, чтобы она возвращала класс по его названию.

Озверин
Molasar, как вы можете узнать имя класса без пакета, где он(класс) находится, при условии, что в разных пакетах могут располагаться классы с одинаковым именем?

Передавайте либо пакет+класс, либо ИмяВашегоКласс.class.


p.s. По-моему, через всю эту ерунду проходят все начинающие явисты...лучше сразу забить делать это. Какая такая задача заставляет вас таки "криво" делать инстансы классов?
12 фев 19, 12:14    [21807241]     Ответить | Цитировать Сообщить модератору
 Re: Полный путь к классу по его названию  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 36512
Molasar,
Ты читаешь ответы?
Названия могут совпадать.
12 фев 19, 12:27    [21807256]     Ответить | Цитировать Сообщить модератору
 Re: Полный путь к классу по его названию  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 36512
Molasar,
Программирование это всегда компромисс. А не биться головой в стену.
12 фев 19, 12:28    [21807257]     Ответить | Цитировать Сообщить модератору
 Re: Полный путь к классу по его названию  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 4785
Molasar, понятно, что вы фабрику делаете и понятно, что у вас там классы делаются по названию. Но зачем эти классы так делать? Для чего они используются?
12 фев 19, 12:50    [21807287]     Ответить | Цитировать Сообщить модератору
 Re: Полный путь к классу по его названию  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 36512
Озверин,
У его парсер входящих строк команд. 500 команд и 500 классов.
- можно не искать классы а загрузить сразу все. Не хочет.
Можно сделать один класс с 500 методами. Не хочет.
12 фев 19, 13:22    [21807321]     Ответить | Цитировать Сообщить модератору
 Re: Полный путь к классу по его названию  [new]
mayton
Member

Откуда: loopback
Сообщений: 38770
Можно создать свой Classloader.
12 фев 19, 14:06    [21807394]     Ответить | Цитировать Сообщить модератору
 Re: Полный путь к классу по его названию  [new]
Molasar
Member

Откуда:
Сообщений: 541
Я понял про повторы.
Буду передавать пакеты + класс.

Озверин
Molasar, понятно, что вы фабрику делаете и понятно, что у вас там классы делаются по названию. Но зачем эти классы так делать? Для чего они используются?
12 фев 19, 14:43    [21807447]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить