本篇内容介绍了“java内部类实例化方法及出错如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
1.内部类实例化方法
如果内部类未声明为static,在实例化时首先需要new一个外部类的对象。并通过p.new Inner()的方式new 内部类,表明这个内部类指向该外部类。内部类的class类型为:Parent.Inner,而不是p.Inner,这个需要和new的方式区分开。
public class Test { public static void main(String[] args) { Parent p = new Parent(); Parent.Inner i = p.new Inner(); i.print(); } } class Parent { class Inner { public void print() { System.out.println("xxx"); } } }
2.实例化出错解决
假设是想在main方法中运行这一段代码,那么即便正确写对了main方法,依然是不能运行的。内部类有一个隐式的成员指向外部对象,在构造的时候赋值。所以普通的类默认构造方法是无参的,但是内部类的默认构造方法有一个参数,这个参数就是为了给指向外围对象的成员属性初始化。
class A{ class B{} } $ javap -p a.b Warning: Binary file a.b contains com.test.A$B Compiled from "Test.java" class com.test.A$B { final com.test.A this$0; //这就是指向外围的成员 com.test.A$B(com.test.A); //这个默认构造方法和你想象的不一样吧 }
那么这种情况下,static代码块肯定是不行。
“java内部类实例化方法及出错如何解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。