powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Переопределить/заменить метод внутреннего класса
6 сообщений из 6, страница 1 из 1
Переопределить/заменить метод внутреннего класса
    #38423511
diverM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Необходимо переопределить/заменить один метод внутреннего класса не меняя исходный код того класса.
Вот небольшой пример того, что надо сделать:
A.java:
public class A {

public B createBInstance() {
...
}

public static class B extends SomeClass {
public String getValue() {
return "test1";
}
}

}

И есть класс С где я это использую:
C.java:
public class C {
public void testMethod() {
C test = new A().createBInstance();
test.getValue();
}
}

Можно ли переопределить/заменить метод, чтобы test.getValue вернуло мне "test2".
Класс С - мой и я могу там делать все. Класс A я менять не могу. AOP использовать нельзя.
...
Рейтинг: 0 / 0
Переопределить/заменить метод внутреннего класса
    #38424345
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если, всё паблик, то createBInstance можно тоже переопределить, закопипастив и добавив анонимный класс.
...
Рейтинг: 0 / 0
Переопределить/заменить метод внутреннего класса
    #38424381
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Я так понимаю, делать это надо только в наследнике охватывающего класса ?
Я не помню, никогда такой хренью не пользовался.
...
Рейтинг: 0 / 0
Переопределить/заменить метод внутреннего класса
    #38424391
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
new A(){
@Override
public B createBInstance(){
   return new B(){
        @Override 
        public String getValue(){
        }
   }
}
}.createBInstance();
...
Рейтинг: 0 / 0
Переопределить/заменить метод внутреннего класса
    #38425082
diverM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
new A(){
@Override
public B createBInstance(){
   return new B(){
        @Override 
        public String getValue(){
        }
   }
}
}.createBInstance();



проблемма в том, что createBInstance не совсем так прост - вызов кучи внутренних методов для инициализации и т.д.
В итоге, нам надо половину кода класса A копировать сюда.
...
Рейтинг: 0 / 0
Переопределить/заменить метод внутреннего класса
    #38425202
Мужик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
diverMпроблемма в том, что createBInstance не совсем так прост - вызов кучи внутренних методов для инициализации и т.д.
В итоге, нам надо половину кода класса A копировать сюда.
Смотря что за класс B. Если он относительно простой, и в нем нет public/protected/package private final методов, то можно попробовать сделать над ним враппер и возвращать его.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
new A() {
    @Override
    public B createBInstance(){
        final B delegate = super.createBInstance();
        return new B() {
            @Override 
            public String getValue(){
                return "test2";
            }

            @Override
            public Object othetMethod() {
                return delegate.otherMethod();
            }

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


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