内部类对象出错
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错误
您的Inner
类是非静态的,因此您必须使用YY
实例对其进行实例化。
在你的情况下是Inner inner = ob.new Inner();
注意:
-
如果你希望该类是公共的,你可以将它称为
YY.Inner
(但你不能以那种方式实例化它) -
按照惯例,您必须使用大写的类名(
Inner
而不是inner
)。 也就是说,我认为值得一提的是,通常在Java中(但这并不像大写的类名一样),开头的大括号保持在同一条线上。
要引用YY
, InnerYY
必须实际上在YY
(在结束rest之前移动)。 然而,你没有一个静态主函数,它似乎是它的用途。
您尝试从静态调用YY.inner()创建非静态内部类。 所以你需要创建对象yy = new YY()然后调用inner = new yy.inner()。 或者使内部类静态。
- 使用intent在两个Android应用程序之间传递数据
- java.lang.NoSuchMethodError sun.misc.Unsafe与Android上的外部Jar
- getLastKnownLocation()始终返回null,所有提供者都是DummyLocationProvider
- 如何在Android中恢复音频活动?
- 如何查找字符串是否包含整数?
- 在Java中直接比较2 float / double是否安全?
- 沉浸式模式Android Studio
- RecyclerView单项ID
- Android StAX游标解析器 – 找不到方法javax.xml.stream.XMLInputFactory.newInstance