【问题标题】:How to access inner class in Java (while in assert)如何在 Java 中访问内部类(在断言中)
【发布时间】:2014-06-06 03:49:47
【问题描述】:

我这里有创建嵌套类的代码,然后检查是否存在值。答案在 [???] 当前所在的位置,给我的代码无法更改。

   //The answer must have balanced parentesis
class A{
  class C{
    int foo(){return 42;}
  }
}
public class Exercise{

  public static void main(String [] arg){
   assert ([???].foo()==42);
  }
}

问题:如何访问 C 中的 foo() 方法(在 A 中)?

【问题讨论】:

    标签: java class testing assert nested-class


    【解决方案1】:

    为了运行类C的非静态方法,你需要创建一个C的实例,但是C是A的非静态内部类,因此你需要创建一个实例A,然后才能创建 C。所以,要创建A

    A a = new A();
    

    创建 C:

    C c = a.new C();
    

    调用方法 foo

    c.foo()
    

    一条龙:

    new A().new C().foo()
    

    【讨论】:

      【解决方案2】:

      dimoniy 是正确的。

      你也可以这样做:

      A.C c = new A().new C();
      
      assert (c.foo() == 42);
      

      【讨论】:

      • 问题是,那我得关闭第一个断言语句
      猜你喜欢
      • 2010-10-20
      • 2011-08-25
      • 2011-08-04
      • 2013-05-07
      • 1970-01-01
      • 1970-01-01
      • 2018-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多