2015-03-10 4 views
-2

У меня есть следующий код:Вложенные классы Java

public class A 
{ 
    private class B 
    { 
     public String a = ""; 
     public B(String a) 
     { 
      System.out.println("hello"); 
      this.a = a; 
     } 
    } 

    public A() 
    { 
     System.out.println("bla"); 
     B b = new B("what's up?"); 
     System.out.println("world"); 
    } 

    public static void main(String[] args) 
    { 
     new A(); 
    } 
} 

По какой-то причине, только «бла» печатается, другие печатные издания не печатаются. Я загружаю этот файл класса с помощью jni, используя динамическую загрузку классов и вызывая основную функцию.

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

+14

Без основной(), я удивлен, что-то напечатано ;-) –

+1

Где вы называете объект б? – ryekayo

+3

Хорошо работает, пока 'someFunc()' вызывается ... что-то еще, что вы нам не показываете? –

ответ

1

там вы идете, этот код работает:

public class A 
{ 
    static class B 
    { 
     public String a = ""; 
     public B(String a) 
     { 
      System.out.println("hello"); 
      this.a = a; 
     } 
    } 

    public A() 
    { 
     System.out.println("bla"); 
     B b = new B("what's up?"); 
     System.out.println("world"); 
    } 

    public static void main(String[] args) 
    { 
     new A(); 
     A.B myAB = new A.B("hello"); 
    } 
} 

ВЫВОД:

bla 
hello 
world 
hello 

, если вы хотите, чтобы напечатать в классе B фактическую строку "а", а затем изменить public String a = ""; к System.out.println(a);, в котором вы получите

bla 
what's up? 
world 
hello 

с "what's up?" i ы передается class B

Смотрите Javadocs для вложенных классов, это поможет вам много, я думаю: http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

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