- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在查看一些有关 java 8 认证的 Material ,并发现了类似于下面所示的代码。有人可以解释使用“this”关键字实例化内部类和不使用“this”关键字之间的区别吗?实例化 InnerClass 的两种方法似乎都有效(没有编译器错误或运行时错误)。
这是否类似于使用类名而不是实例名来访问公共(public)静态成员?两种方法都可以,但是使用类名优于使用实例名。
public class OuterClass {
class InnerClass { } // Define Inner class
private InnerClass innerclass; // private member
private InnerClass thisInnerClass; // private member
public OuterClass() {
this.innerclass = new InnerClass(); // without 'this' keyword
this.thisInnerClass = this.new InnerClass(); // with 'this' keyword
}
}
========================================
编辑:两者没有区别。我编译了以下两个版本,两个版本的 md5 和是相同的。使用“this”引用和不使用“this”引用会生成相同的字节码。
public class OuterClass {
class InnerClass { } // Define Inner class
private InnerClass innerClass; // private member
public OuterClass() {
this.innerClass = new InnerClass(); // without 'this' keyword
}
}
上面编译的代码的 MD5 总和(没有“this”引用):
MD5 (OuterClass$InnerClass.class) = 7f1679f1c7a0201164ce5eb03fe29699
MD5(OuterClass.class)= bf7419b01f8f7c24d2892d10c4fd6e05
public class OuterClass {
class InnerClass { } // Define Inner class
private InnerClass innerClass; // private member
public OuterClass() {
this.innerClass = this.new InnerClass();// with 'this' keyword
}
}
以上编译代码的 MD5 总和(带有“此”引用):
MD5 (OuterClass$InnerClass.class) = 7f1679f1c7a0201164ce5eb03fe29699
MD5(OuterClass.class)= bf7419b01f8f7c24d2892d10c4fd6e05
最佳答案
我的理解是两者没有区别。这就像从包含 foo()
的类中调用 foo()
或 this.foo()
。 this
未明确写入时是隐含的。
关于java - 使用 "this.new InnerClass()"和 "new InnerClass()"实例化之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37553114/
这个问题已经有答案了: Instantiate inner class object from current outer class object (3 个回答) 已关闭 7 年前。 我正在查看一些
我正在阅读 Bruce Eckel 所著的《Thinking in Java》一书。我在内部类一章中遇到了这个断言,它说:“使用本地内部类而不是匿名内部类的唯一理由是,如果您需要命名构造函数和/或重载
内部类的分类 1、本地内部类 2、实例内部类 3、静态内部类 4、匿名内部类 首先,我要在这声明一下,内部类也是类,不管它是属于何种类型。 说这个是为了端正你们内部类的角度。 只要是类,就会有类的特性
Student.Student_Card obj4 = Student.new Student_Card(namess, idss, true); Student 类是外部类,Studen_Card
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
基于答案:https://stackoverflow.com/a/47693998/8760211 当我尝试从类 Invoker 中对类型为 Student 的元素的列表进行排序时,发生以下编译错误。
http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.7.6 Every CONSTANT_Class_info e
我有几个导入的 jar 在项目构建时在 Eclipse 中出现此错误: [2011-04-08 16:31:48 - MokbeeAndroid] Dx warning: Ignoring Inner
我有一个java类,它有一些公共(public)方法,我想保留它们。 (这已经完成了)我还有一个包含静态常量的内部类。该类具有以下结构。 public class MyClass { publ
我有两个类:OuterClass 和 InnerClass。 InnerClass 是 OuterClass 的私有(private)成员,应使用 InnerClass(int) 构造函数在 Oute
我在 Android Studio 中构建代码时收到此警告。 它们很少会不显示,但大多数时候会显示。 warning: Ignoring InnerClasses attribute for an a
我是 Android 新手,正在使用 Ical4j 库来解析 ICS(Outlook 日历)文件。 但是,当我在 Eclipse 中构建应用程序时,控制台中多次出现以下警告: [2010-07-22
我有一个用 Java 编写的 REST 服务。我有一个运行良好的 GET 方法,现在我想实现 POST 方法。 @POST @Consumes(MediaType.APPLICATION_JSON)
伙计们。我对 Android 中的 PopupWindow 有疑问。 我有2个Buttons,点击任何一个都会显示一个popupWindow,它是外部类中的一个成员变量。 两个popupWindow的
伙计们。我收到这些错误(其中 504 个): Error:warning: Ignoring InnerClasses attribute for an anonymous inner class E
我最近升级到 Android Studio 3.1,并在使用 Java 项目构建 Kotlin 时收到以下警告。 InnerClass annotations are missing correspo
我正在尝试从 ClassB 访问 ClassA 中定义的内部类 Class1 ClassB.java public class ClassB implements Initializable {
我对在实例上调用 new 的可能性感到困惑,比如 InnerClass sc = pc.new InnerClass(); 我知道如何使用它,但我的问题是关于完全理解它。喜欢: JAVA文档中哪里有描
我正在尝试逐步执行名为 SVNPublisher 的 Hudson 插件的代码。我检查了 SVNPublisher 的代码,使用 Netbeans 打开项目,然后单击“调试主项目”。这导致 Firef
这是我的 java 文件的样子: public class MyActivity { public class MyVector {
我是一名优秀的程序员,十分优秀!