2017-01-27 3 views
-1

я определил класс, который содержит внутреннее определение класса, как это: -Как правильно определить и создать экземпляр внутреннего класса

public class A{ 
public class B{ 
    } 
} 

Однако, когда я компилирую мой код я получаю ошибку компилятора для этого line:

A.B innerObj=outerObj.new A.B(); 

Что я делаю неправильно?

Error: A.java:9: error: ')' expected 
      A.B innerObj=outerObj.new A.B(); 
            ^
+4

Что вы делаете неправильно: не публиковать фактическую ошибку компилятора. – luk2302

+0

@ luk2303, Пожалуйста, не могли бы вы объяснить мне выше ошибки. –

ответ

5

Общий синтаксис для создания экземпляра члена внутреннего класса выглядит следующим образом: -

OuterClassReference.new MemberInnerClassConstructor();

Новый оператор уже квалифицирован с вмещающей ссылкой экземпляра (как в outerObj.new), Java-компилятор будет выяснить полное имя имени класса вмещающего автоматически.

Ваше изменение кода должно быть: -

A.B innerObj=outerObj.new B(); 
+0

Альтернативный вариант, чтобы внутренний класс выглядел «статическим», тогда подразумевается синтаксис. –

+0

Нет, даже если вы сделаете внутренний класс статичным, все еще его синтаксисом, то есть A.B innerObj = externalObj.new A.B(); не будет работать. –

+0

Если внутренний класс статичен, он будет считаться классом верхнего уровня и не понадобится экземпляр окружающего класса для его создания объекта. В этом случае он может просто сделать B innerObj = new B(); в классе A. –

1

вот еще один способ, чтобы создать экземпляр внутреннего класса,

// Instantiating the outer class 
A outer = new A(); 

// Instantiating the inner class 
A.B inner = outer.new B(); 

надеюсь, что это помогает

0
public class OuterClass { 

class innerClass{ 
    void show(){ 
     System.out.println("this is a inner class"); 
    } 
} 
public static void main(String[] args) { 


    OuterClass oc=new OuterClass(); 
    OuterClass.innerClass ic=oc.new innerClass(); 
    ic.show(); 
} } 

//Output: this is a inner Class 

Вы должны ссылка внешний класс для создания экземпляра внутреннего класса

Смежные вопросы