- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我最近安装了字节码大纲 Eclipse 插件,发现我的测试类
public class Test {
}
调用 java.lang.Object 的构造函数
public class Test {
public <init>()V
L0
LINENUMBER 15 L0
ALOAD 0
INVOKESPECIAL java/lang/Object.<init>()V
RETURN
L1
LOCALVARIABLE this LTest; L0 L1 0
MAXSTACK = 1
MAXLOCALS = 1
}
INVOKESPECIAL java/lang/Object.<init>()
V表示调用java.lang.Object的构造函数
这有什么意义吗?通过java.lang.Object字节码判断
public <init>()V
L0
LINENUMBER 37 L0
RETURN
MAXSTACK = 0
MAXLOCALS = 1
它什么都不做。刚回来。
最佳答案
它必须满足 section 4.9.2关于结构约束的 JVM 规范:
Each instance initialization method (§2.9), except for the instance initialization method derived from the constructor of class Object, must call either another instance initialization method of this or an instance initialization method of its direct superclass super before its instance members are accessed.
现在,对于 Object
的直接子类的类,规则可以放宽 - 但我怀疑它是否有任何好处,并且会不优雅(IMO)。如果 Object
构造函数确实在未来执行了一些初始化怎么办?您真的想要一个允许您绕过它的规范吗?
关于java - 真的有必要调用 java.lang.Object 构造函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13766932/
我正在使用 this solution在二进制矩阵中找到与图像边界对齐的矩形。假设现在我想找到一个不与图像边框对齐的矩形,并且我不知道它的方向;找到它的最快方法是什么? 为了示例,让我们寻找一个仅包含
else: 行在这个 Python 程序中是否正确/必要? from random import randrange for n in range(10): r = randrange(0,1
在 TDPL 7.1.5.1 中讨论了将 Widget w2 分配给 w1 并且作者指出“将 w2 逐个字段分配给 w1 会将 w2.array 分配给 w1.array——一个简单的数组边界分配,而
我是一名优秀的程序员,十分优秀!