Как обратиться к внешнему классу в другом экземпляре нестатического внутреннего класса?

Oracle не является открытым исходным кодом, поэтому нет, у них нет общедоступной системы отслеживания ошибок. Если у вас есть контракт на поддержку, вы можете увидеть некоторые ошибки в Oracle Support, исправленные, а некоторые нет, но есть и неопубликованные ошибки, невидимые для общественности.

14
задан Kris Nuttycombe 21 November 2008 в 20:35
поделиться

3 ответа

Нет.

лучший способ, вероятно, что Вы предложили: добавьте getFoo () метод к Вашему внутреннему классу.

6
ответ дан 1 December 2019 в 16:24
поделиться

Нет, не возможный без метода считывания. 'Это' ключевое слово будет всегда указывать на текущий экземпляр. Мне довольно любопытно, почему Вы хотели бы сделать, это... кажется на выполнение состава неправильным способом.

public class Foo {

  public Bar createBar(){
    Bar bar = new Bar(this)
    return bar;
  }
}

public class Bar {
  Foo foo;
  public Bar(Foo foo){
    this.foo = foo;
  }

  public boolean equals(Object other) {
    return foo.equals(other.foo);
  }
}

Начиная с использования Foo.this ограничивает создание внутреннего класса (Foo myFoo = новый Foo (); Панель myFoo.new (); к экземпляру я сказал бы, что это намного более чисто.

2
ответ дан 1 December 2019 в 16:24
поделиться

да:

public class Foo {
    public class Bar {
        public Foo getMyFoo() {
            return Foo.this;
        }
    }
    public Foo foo(Bar bar) {
        return bar.getMyFoo();
     }
    public static void main(String[] arguments) {
        Foo foo1=new Foo();
        Bar bar1=foo1.new Bar();
        Foo foo=(new Foo()).foo(bar1);
        System.out.println(foo==foo1);
    }
}
-1
ответ дан 1 December 2019 в 16:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: