【问题标题】:Nested classes java嵌套类 java
【发布时间】:2015-03-10 20:38:18
【问题描述】:

我有以下代码:

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();
    }
}

由于某种原因,只打印了“bla”,其他打印件不打印。 我正在使用动态类加载和调用主函数的 jni 加载这个类文件。

我做错了什么?

【问题讨论】:

  • 如果没有 main(),我很惊讶会打印任何东西 ;-)
  • 你在哪里调用对象 b?
  • 工作正常,只要 someFunc() 被调用...你没有向我们展示的其他东西?
  • 创建一个例子来展示我们可以自己执行的问题。 90% 的情况下,您会自己发现问题,而不是向我们展示我们无法解决的问题。
  • “我正在使用动态类加载使用 jni 加载 A 类。” - 从您的代码看来并非如此。

标签: java nested-class


【解决方案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 类中打印实际的字符串“a”,则将 public String a = ""; 更改为 System.out.println(a); 在这种情况下您将得到 ​​p>

bla
what's up?
world
hello

因为"what's up?" 被传递给class B

查看嵌套类的 Javadocs,我认为它会对您有很大帮助:http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-21
    • 1970-01-01
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多