В Java возможно ли динамически создавать экземпляр анонимного подкласса, учитывая только экземпляр родительского класса? - PullRequest
3 голосов
/ 20 февраля 2011

В Java возможно ли динамически создавать экземпляр анонимного подкласса, учитывая только экземпляр родительского класса?

Код шаблона, который я пытаюсь реализовать, выглядит следующим образом:

public interface IStringCarier { public String getStr(); }

public static IStringCarier introduce(Object victim, final String str) {
   // question subject
}

public class AAA { }

public static void main() {
    AAA aaa = new AAA();

    assert !(aaa instanceof IStringCarier);

    IStringCarier bbb = introduce(aaa, "HelloWorld");

    assert aaa == bbb;
    assert "HelloWorld".equals(bbb.getStr());
}

ТамНа самом деле есть еще 2 требования-требования к этому коду:

(2) Не только создать экземпляр подкласса, но и переназначить экземпляр прототипа вновь созданному экземпляру (2-е утверждение в коде).

(3) Ввести подкласс в некоторый конкретный интерфейс.

Я сомневаюсь, что это возможно, но я новичок в Java, так что ...

1 Ответ

3 голосов
/ 20 февраля 2011

Если вы новичок в Java, вы должны спросить себя, зачем вам эта функциональность.Скорее всего, найдется лучшее решение, если бы вы только описали, какую проблему вы пытаетесь решить.

Единственный подход, который у вас есть (кроме переписывания байт-кода), - это использование Динамические прокси , поскольку они способны реализовать интерфейс во время выполнения.Но использование их так, как вы предлагаете, не будет иметь большого смысла.

Не только создать экземпляр подкласса, но и переназначить экземпляр прототипа на вновь созданный экземпляр

Java не использует прототипное наследование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...