- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个类A和内部类A.B,并且我在单独类的方法中创建了类A.B的实例。
A obj1 = new A();
A.B obj2 = obj1.new B();
这个实例是什么?它是 obj1 的一部分还是一个独立的对象?
据我了解,某些实例是独立实体,例如1个苹果,1个人等等,是否可以类比内部类的对象?
最佳答案
B objectOfB1 = objectOfA1.new B ();
B objectOfB2 = objectOfA2.new B ();
暗示 objectOfB1 与 objectOfA 关联。 objectOfB1 具有 objectOfA1 引用的对象的隐式引用。类似地,objectOfB2 与objectOfA2 关联。
现在即使 objectOfA1 = null;完成后,它所引用的 A 对象也将不符合垃圾回收条件,因为它具有来自 B 类对象内部的硬引用,即B1 对象。
objectOfB1 知道 objectOfA1,但反之则不然。您可以认为我们将 objectOfA1 作为构造函数参数传递来创建 objectOfB1。 objectOfB2 也是如此,它持有对 objectOfA2 的隐式引用。
class OuterClass{
InnerClass dataMem1;
InnerClass dataMem2;
class InnerClass{
int k;
}
}
这里,如果没有 OuterClass 对象,InnerClass 对象就不能存在,因此编译时,编译器会在 It 中注入(inject) OuterClass 的引用。
并不完全是这样,但您可以引用下面的代码来理解,因为编译上面的代码时会发生非常类似的事情。
class OuterClass{
InnerClass dataMem1;
InnerClass dataMem2;
}
class InnerClass{
OuterClass objInjectedByCompiler;
int k;
// constructor
InnerClass(OuterClass objectOfOuter){
this.objInjectedByCompiler = objectOfOuter;
}
}
要创建 InnerClass 的对象,您需要 OuterClass 的对象。
现在的问题应该是 InnerClass 的对象实际上如何获取 OuterClass 的对象。当我们执行 objOfOuter.new InnerClass()
时,与 objOfOuter
关联的 this
将充当类 OuterClass 所需的对象。
PS:以上适用于非静态嵌套类,但不适用于静态的内部嵌套类。
关于java - 与内部类意识的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37032177/
背景 我想要一个跟踪其自身状态的函数: var myObject = { myFunction: function () { var myself = this.myFunct
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 2年前关闭。 Improve t
Windows 10 Creator's Update Edition 中为最终用户提供了一个新选项。最终用户可以在兼容性选项卡上将 EXE 的属性更改为“覆盖高 DPI 缩放行为”并将其设置为系统(
这个问题在这里已经有了答案: Windows Forms window changes its size when I create a WPF window (3 个答案) 关闭 4 年前。 所以
长期读者第一次海报。请温柔点。 我热衷于在 VB.net 中创建游戏。作为一名业余程序员,我免费赠送我的游戏。因为我是一个没有经过正式培训的业余爱好者,所以我尝试让自己了解正确的编程原则,并在进行 O
我正在将 Spring 插入现有的 Java EE Web 应用程序。我的 web.xml 中有以下几行: com.MyContextListener 然后跟随 MyContextList
我曾想将我的应用程序的新版本(WPF 通过 Desktop Bridge 转换为 UWP)发布到 Microsoft Store,但未能通过认证,并出现以下警告: File **.exe neithe
在我的“工具箱”中,我正在使用此功能: function dataAttuale() { $now = new DateTime(); $data
我有一个同时使用 winforms 和 WPF 的 C# 程序,我正在努力让它在高 DPI 环境中工作。目前,如果我从解决方案中删除所有 WPF 项目并运行它,它会很好地缩放,但是一旦我重新添加任何
我是一名优秀的程序员,十分优秀!