Size: a a a

2020 August 15

I

Igor in pro.jvm
Ну ладно, попытаюсь так описать
источник

I

Igor in pro.jvm
Я в последнее время игрался с динамическими проксями в Джаве и нашёл одну вещь, которая, как мне казалось, не должна была работать.

А именно, если создать Proxy для интерфейса, в котором есть default метод, и в хэндлере прокси напрямую найти и вызвать этот метод на прокси объекте, то он не только и правда выполнится, но и при вызове другого метода из default метода, вызов пройдёт опять в хэндлер прокси.
То есть грубо говоря  контроль возвращается обратно прокси хэндлеру, но объект об этом ничего не знает.

Практическое применение этого весьма сомнительно, конечно.
источник

QH

Quantum Harmonizer in pro.jvm
Igor
Я в последнее время игрался с динамическими проксями в Джаве и нашёл одну вещь, которая, как мне казалось, не должна была работать.

А именно, если создать Proxy для интерфейса, в котором есть default метод, и в хэндлере прокси напрямую найти и вызвать этот метод на прокси объекте, то он не только и правда выполнится, но и при вызове другого метода из default метода, вызов пройдёт опять в хэндлер прокси.
То есть грубо говоря  контроль возвращается обратно прокси хэндлеру, но объект об этом ничего не знает.

Практическое применение этого весьма сомнительно, конечно.
А должно быть как? Чтобы из прокси невозможно было переопределить default-методы?
источник

I

Igor in pro.jvm
Ну если не ошибаюсь, по дефолту default метод не вызывается на прокси объекте
Он кажется всегда сначала в invoke() уходит
источник

I

Igor in pro.jvm
Поэтому я и написал "найти" default метод
Хотя я могу и ошибаться
источник

I

Igor in pro.jvm
Igor
Ну если не ошибаюсь, по дефолту default метод не вызывается на прокси объекте
Он кажется всегда сначала в invoke() уходит
Ах да, плюс это изначально не был дефолт метод
То есть я имплементирую его в саб интерфейсе, но вызываю на объекте типа супер интерфейса
Не знаю куда в таком случае уходит вызов
источник
2020 August 16

SS

Sergei S in pro.jvm
Alexandr Emelyanov
Опять билд джавы 5 летней давности? Опять старый кейстор?
Нет оказалась другая проблема закрытые порты интернета
источник

AE

Alexandr Emelyanov in pro.jvm
Вот набежали
источник

АП

Артур Петров... in pro.jvm
Боты
источник

R

Rus in pro.jvm
их настолько много что некоторые даже вы...
источник
2020 August 17

h

humanoid in pro.jvm
В Java нелья получается вывести интерфейс для двух классов (А и B), чтобы например положить их в общих лист и затем вызывть handle?

class One{}
class Two{}

class A{
   String handle(One one){
       return "A-One";
   }
   String handle(Two one){
       return "A-Two";
   }
}

class B{
   String handle(One one){
       return "B-One";
   }
   String handle(Two one){
       return "B-Two";
   }
}
источник

DC

Denis Chikanov in pro.jvm
humanoid
В Java нелья получается вывести интерфейс для двух классов (А и B), чтобы например положить их в общих лист и затем вызывть handle?

class One{}
class Two{}

class A{
   String handle(One one){
       return "A-One";
   }
   String handle(Two one){
       return "A-Two";
   }
}

class B{
   String handle(One one){
       return "B-One";
   }
   String handle(Two one){
       return "B-Two";
   }
}
Каких двух из четырех представленных? А и В?
источник

h

humanoid in pro.jvm
Denis Chikanov
Каких двух из четырех представленных? А и В?
Да для А и B
источник

WD

WhoLetThe DogsOut in pro.jvm
Почему нельзя?
источник

WD

WhoLetThe DogsOut in pro.jvm
Бери и выводи.
источник

DC

Denis Chikanov in pro.jvm
Вот и я тоже не вижу проблем: методы с разной сигнатурой.
источник

h

humanoid in pro.jvm
WhoLetThe DogsOut
Почему нельзя?
Ну можно. Я наверное не уточнил деталь. Не отдельно для handle(One .. и handle(Two.. - а один для всех handle
источник

DC

Denis Chikanov in pro.jvm
humanoid
Ну можно. Я наверное не уточнил деталь. Не отдельно для handle(One .. и handle(Two.. - а один для всех handle
Ну так а проблема в чём?
источник

WD

WhoLetThe DogsOut in pro.jvm
Нет, один интерфейс не сделаешь. Можно параметризовать, но реализовать Handler<A> и Handler<B> в одном классе не получится.
источник

h

humanoid in pro.jvm
WhoLetThe DogsOut
Нет, один интерфейс не сделаешь. Можно параметризовать, но реализовать Handler<A> и Handler<B> в одном классе не получится.
Ну вот - да я об этом
источник