我可以将内部类声明为静态并访问它而不在周围的类中创建对象吗?

时间:2015-07-11 13:03:11

标签: java static

我读取静态可以应用于嵌套类。因此,无需创建对象即可访问。我将此作为输出。

存储在str中的字符串是 - 内部类Example1 我的代码:

cardview:cardUseCompatPadding="true"

3 个答案:

答案 0 :(得分:1)

<强>声明

class OuterClass {
    ...
    static class StaticNestedClass {
        ...
    }
    class InnerClass {
        ...
    }

要为静态嵌套类创建对象,请使用以下语法:

OuterClass.StaticNestedClass nestedObject =
     new OuterClass.StaticNestedClass();

请参阅http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

更新: -

我在程序下运行并且运行没有任何错误

class Example1{
  //Static class
  static class X{
      static String str="Inside Class X";
  }
  public static void main(String args[])
  {
      X.str="Inside Class Example1";
      System.out.println("String stored in str is- "+ X.str);
  }
}

答案 1 :(得分:1)

您的代码运行正常,没有任何错误。

  

您可以访问静态内部类的静态方法/字段,而无需访问   创建静态内部类的任何对象。但是如果你想访问   来自另一个的静态内部类的任何非静态方法/字段   在class中,您将需要创建静态内部类的对象。

class Example1 {
    // Static class
    static class X {
        static String str = "Inside Class X";

        public void display() {
            System.out.println("I am in display method");
        }
    }

}

public class StaticInnerDemo {
    public static void main(String[] args) {
//Accessing static field of an static inner class
        Example1.X.str = "Inside Class Example1";
        System.out.println("String stored in str is- " + Example1.X.str);

//Accessing non static method of static inner class.
        Example1.X ob = new Example1.X();
        ob.display();

    }

}

nested classes

答案 2 :(得分:0)

它不需要外部类的实例来引用内部类,因为内部类是静态的。

public class Outer {
    public static class Inner { 
    }
    public static void main(String[] args) {
        Inner inner = new Inner(); 
    }
}