Как автоматически понижать классы в Java?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как автоматически понижать классы в Java?

Сообщение Anonymous »

Как бы вы автоматически понижали уровень в Java?
Посмотрите на этот пример:

Код: Выделить всё

public class Parent {}

public class Boy extends Parent {}

public class Girl extends Parent {}

Parent father = new Boy();
Parent mother = new Girl();

Boy kid = (Boy)father;
Girl kiddette = (Girl)mother;
Я знаю, что могу вручную привести вниз, как в примере выше, но как мне сделать это автоматически?
Итак, мне нужно автоматическое приведение метод, примерно такой:

Код: Выделить всё

public ? downcast(? parent) { return ? parent; }
который я бы использовал следующим образом:

Код: Выделить всё

Boy kid = downcast(father);
Girl kiddette = downcast(mother);
Поэтому я не хочу выполнять какое-либо явное приведение типов в методе вызывающего объекта. Мне нужно приведение типов, чтобы скрыть приведение внутри себя. Предпочтительно, я бы хотел избежать проверок типов (

Код: Выделить всё

instanceof
) внутри метода приведения, поэтому, если приведение можно обобщить, это было бы здорово.
Что мне нужно разместить вместо ? >, ? и ?, чтобы это работало.
Я помню, что я делал то же самое около 10 лет назад на Java, и я помню, что Меня озадачил код, но он работал и я не понимал, как он работает, просто он работает, но мне не нужно было снова делать эту штуку на Java за последние 10 лет, поэтому я забыл, что делал. И я помню, что мне удалось решить ее без проверок типов. Итак, одна строка кода, которая работала независимо от того, сколько дочерних классов было у родительского класса.

Подробнее здесь: https://stackoverflow.com/questions/765 ... es-in-java
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»