2011-07-16 45 views
0

我想知道当你创建一个对象时会发生什么,但是我没有在Object.java中找到一个Object()构造方法,即使文档说Object()存在。当你调用新的Object()时会发生什么?

+2

在Java中,每个类如果没有定义构造函数,则已经有一个为空参数。 –

+0

@Asad Rasheed它仍然可能是一个受保护的或私有的构造函数。为什么公开?第二个想法:也许该构造需要公开,所以你可以实例化一个对象数组? – Jeremy

+0

@Jeremy:由于Java对其进行了明确定义,所以它应该受到最少的限制。这是我的意见可能是错误的这个声明。 –

回答

4

对象确实有一个无参数的构造函数,您可以通过倾销类的字节代码看到它,使用

javap -v java.lang.Object 


public java.lang.Object(); 
Code: 
Stack=0, Locals=1, Args_size=1 
0: return 
LineNumberTable: 
line 20: 0 
2
Object object = new Object(); 

这是完全有效的代码。它基本上什么都不做。我已经看到了它的唯一用途是用它作为锁:

int c = 0; 
Object lock = new Object(); 

... 

synchronized(lock) { 
    c++; 
} 
+1

这不是(完全)的问题。 – delnan

+0

新的对象()除了锁可以用作键或标记值,还有更多的选项可以利用返回的指针,但这些都不在讨论范围之内。好的是,指针是100%独特的,这很重要。 – bestsss

+0

啊......重读这个问题,并意识到他正在查看源代码。之前没有完全理解。只是以为他正在试图创造一个新的对象。 – Joel

相关问题