powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / ArrayList<Class<MyClass>>в цикле получить MyClass'ы и вызывать у них ихстатичных метод
8 сообщений из 8, страница 1 из 1
ArrayList<Class<MyClass>>в цикле получить MyClass'ы и вызывать у них ихстатичных метод
    #39909674
javalx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Есть некий класс
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
public class MyClass<T> {
    public static void foo() {
        System.out.println("foo");
    }
}


public class Main {

    public static void main(String[] args) { new Main().start(); }

    public void start() {
        ArrayList<Class<MyClass>> list = new ArrayList<>();
        list.add(MyClass.class);
        for (Class<MyClass> c: list) {
            System.out.println("c = " + (MyClass) c.foo); //так не компилирует. Как получить все MyClass'ы из list'a и вызвать у них статичный метод foo?
        }
}


Как получить все MyClass'ы из list'a и вызвать у них статичный метод foo?
...
Рейтинг: 0 / 0
ArrayList<Class<MyClass>>в цикле получить MyClass'ы и вызывать у них ихстатичных метод
    #39909675
javalx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
для большего понимания что требуется - расширю описание вопроса

Есть некий класс

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public class MyClass<T> {
    public static void foo() {
        System.out.println("foo");
    }
}
public class MyClass2 extends MyClass {
    public static void foo() {
        System.out.println("foo");
    }
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class Main {

    public static void main(String[] args) { new Main().start(); }

    public void start() {
        ArrayList<Class<? extends MyClass>> list = new ArrayList<>();
        list.add(MyClass.class);
        list.add(MyClass2.class);
        for (Class<? extends MyClass> c: list) {
            //System.out.println("c = " + (MyClass) c.foo);
        }
}


Как получить все MyClass'ы из list'a и вызвать у них статичный метод foo?
...
Рейтинг: 0 / 0
ArrayList<Class<MyClass>>в цикле получить MyClass'ы и вызывать у них ихстатичных метод
    #39909689
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У класса MyClass один статичный метод на все экземпляры объектов данного класса, т.ч. вопрос сформулированный в subj не имеет смысла.

Если нужно определить класс конкретного экземпляра в List, то https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#getClass() в помощь
...
Рейтинг: 0 / 0
ArrayList<Class<MyClass>>в цикле получить MyClass'ы и вызывать у них ихстатичных метод
    #39909863
MAPA3OT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javalx, вы про это?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
    public void start() {
        ArrayList<Class<MyClass>> list = new ArrayList<>();
        list.add(MyClass.class);
        for (Class<MyClass> c: list) {
            try {
                c.getDeclaredMethod("foo").invoke(c); 
            } catch (Exception e){}
        }
    }
...
Рейтинг: 0 / 0
ArrayList<Class<MyClass>>в цикле получить MyClass'ы и вызывать у них ихстатичных метод
    #39909885
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAPA3OT,
Какой смысл статический то вызывать?
...
Рейтинг: 0 / 0
ArrayList<Class<MyClass>>в цикле получить MyClass'ы и вызывать у них ихстатичных метод
    #39909926
MAPA3OT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp, спроси чего попроще, я в принципе не очень понимаю, зачем ТСу надо то, что он написал, но если надо, то отчего бы и не влезть в рефлексию.
А так статик и генерик не дружат, поэтому я теряюсь в догадках, как оно должно работать в реальности.
...
Рейтинг: 0 / 0
ArrayList<Class<MyClass>>в цикле получить MyClass'ы и вызывать у них ихстатичных метод
    #39912816
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javalx,

Код: java
1.
2.
3.
for (Class<MyClass> c: list) {
            System.out.println("c = " + MyClass.foo()); // магия
        }
...
Рейтинг: 0 / 0
ArrayList<Class<MyClass>>в цикле получить MyClass'ы и вызывать у них ихстатичных метод
    #39913079
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javalx,

Правильно не компилируется

"String + void == ошибка"

Вы пытаетесь сделать конкатенацию строки и void

Надо так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
public class MyClass<T> {
    public static void foo() {
        System.out.println("foo");
    }
}


public class Main {

    public static void main(String[] args) { new Main().start(); }

    public void start() {
        ArrayList<Class<MyClass>> list = new ArrayList<>();
        list.add(MyClass.class);
        for (Class<MyClass> c: list) {
            System.out.print("c = "); 
            ((MyClass) c).foo();
        }
}
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / ArrayList<Class<MyClass>>в цикле получить MyClass'ы и вызывать у них ихстатичных метод
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]