powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вернуть в функции класс а не объект
9 сообщений из 9, страница 1 из 1
Вернуть в функции класс а не объект
    #38737175
zamatay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня всем.
Подскажите есть такая задача грубо говоря статический класс у него предположим одно поле
Код: java
1.
2.
public static class Base {
public static String TableName}


от него есть наследники типа
Код: java
1.
2.
3.
4.
5.
public static final class disposals extends Base implements BaseColumns  {
static{
TableName = "disposals";
}
}


ну и такой еще
Код: java
1.
2.
3.
4.
5.
public static final class disposalsComments extends Base implements BaseColumns  {
static{
TableName = "disposalsComments";
}
}


так вот задача написать функцию которая бы возвращала не объект а сам класс, что то типа
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    public static Base getContractByUri(Uri uri) {
        switch (sUriMatcher.match(uri)) {
            case Contract.disposals.ID:
                return disposals();
            case Contract.disposal_comment.ID:
                return disposal_comment();
            case Contract.ID_STAFF:
                return staff();
            default: return null;
        }
    }


Прошу сильно не пинать только начал изучать java. Помимо TableName там еще куча всяких полей, где в коде в зависимости от uri нужно получать сам класс.
Код: java
1.
getContractByUri(uri).TableName
...
Рейтинг: 0 / 0
Вернуть в функции класс а не объект
    #38737185
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zamatayПрошу сильно не пинать
Да кому это нужно...

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public static Class<?> getContractByUri(Uri uri) {
        switch (sUriMatcher.match(uri)) {
            case Contract.disposals.ID:
                return disposals.class;
            case Contract.disposal_comment.ID:
                return disposal_comment.class;
            case Contract.ID_STAFF:
                return staff.class;
            default: return null;
        }
    }
...
Рейтинг: 0 / 0
Вернуть в функции класс а не объект
    #38737193
zamatay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, что откликнулись, но только не понятно как этим дальше пользоваться так как при вызове
Код: java
1.
2.
Contract.Base path =  Contract.getContractByUri(getUri());
String tn = path.TableName;


на первой строчке вылезает ошибка
Error:(123, 55) error: incompatible types: Class<CAP#1> cannot be converted to Base
where CAP#1 is a fresh type-variable:
CAP#1 extends Object from capture of ?
...
Рейтинг: 0 / 0
Вернуть в функции класс а не объект
    #38737206
zamatay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще немного не по теме вопрос, если можно в двух словах или ткнуть ссылкой.
почему нельзя вот так написать
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    public static Class<Base> getContractByUri(Uri uri) {
        switch (sUriMatcher.match(uri)) {
            case Contract.disposals.ID:
                return disposals.class;
            case Contract.disposal_comment.ID:
                return disposal_comment.class;
            case Contract.ID_STAFF:
                return staff.class;
            default: return null;
        }
    }


что бы он сразу знал, что возвращаться будет класс наследованный от Base
...
Рейтинг: 0 / 0
Вернуть в функции класс а не объект
    #38737224
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zamatayСпасибо, что откликнулись, но только не понятно как этим дальше пользоваться так как при вызове
Это в раздел по яве.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
    public static void test() {
        Field tableName = null;
        Class<?> cls = getContractByUri(someUri);
        try {
            tableName = cls.getField("TableName");
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        }
    }



Переезжаем...

Модератор: Тема перенесена из форума "Android".
...
Рейтинг: 0 / 0
Вернуть в функции класс а не объект
    #38737230
zamatay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну да как то не очень красиво получается, проще уж тогда наверное создавать объекты и обращаться спокойно ко всем их полям и методам.
...
Рейтинг: 0 / 0
Вернуть в функции класс а не объект
    #38737274
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zamatayпроще уж тогда наверное создавать объекты и обращаться спокойно ко всем их полям и методам
Что помешало сразу избрать этот путь?
...
Рейтинг: 0 / 0
Вернуть в функции класс а не объект
    #38737335
zamatay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да просто не эстетично как то, класс статический, хотелось бы получать сам класс, а не создавать все время объекты
...
Рейтинг: 0 / 0
Вернуть в функции класс а не объект
    #38737503
ferc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zamatay,

так обращайся к статическим методам как следует

Код: java
1.
SomeClazz.someMethod
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Вернуть в функции класс а не объект
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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