内部类对象出错

时间:2011-04-06 12:15:04

标签: java

import java.io.*;
class YY
{

   int a=0;
   void putValue(int m)
   {
        a=m;
    inner x=new inner();
        x.display();
   }
   class inner
   {
    void display()
        {
       System.out.println("value of a:"+a);
        }
   }
}

class InnerYY
{
   public static void main(String args[])
   {
    YY ob=new YY();
    ob.putValue(90);
    YY.inner i = new YY.inner();
    i.display();
   }
}

在运行此程序时,我收到以下错误...

InnerYY.java:27:需要包含YY.inner的封闭实例         YY.inner i = new YY.inner();                      ^ 1错误

3 个答案:

答案 0 :(得分:4)

您的Inner类是非静态的,因此您必须使用YY实例对其进行实例化。

在你的情况下是Inner inner = ob.new Inner();

请注意:

  • 如果您希望该类公开,您可以将其称为YY.Inner(但您无法以此方式实例化)

  • 按照惯例,您必须使用大写的类名(Inner而不是inner)。也就是说,我认为值得一提的是,通常在Java中(但这并不像大写的类名一样),开头的大括号保持在同一条线上。

答案 1 :(得分:0)

要引用YYInnerYY必须实际位于YY内(在结束休息之前移动)。然而,你没有静态主函数,这似乎是它的用途。

答案 2 :(得分:0)

您尝试从静态调用YY.inner()创建非静态内部类。所以你需要创建对象yy = new YY()然后调用inner = new yy.inner()。或者使内部类静态。