Object类型的对象有哪些用处

时间:2014-09-09 15:19:13

标签: java object new-operator

我在SCJP书中看到了下面的练习题下面的代码

Object obj = new Object();

首先我认为这可能是一个错误,因为我没有使用这样的语句。现在我明白这是一个有效的陈述。

我只是想了解这个的实际用途(如果有的话)。您可以使用Object类型的对象(而不是从Object派生的类)来使用什么?

4 个答案:

答案 0 :(得分:16)

代码声明了Object类型的引用,并为其分配了一个新分配的Object实例。

现在,类Object的实例可能看起来毫无意义。但是,它们确实有实际用途。一个这样的用途是锁定:

...
synchronized (obj) {
   ...
}
...

答案 1 :(得分:1)

它可以用于例如同步:

synchronized (obj) {
   ... 
}

答案 2 :(得分:1)

实际使用并不常见(NPE答案就是一个例子),但由于每个类都继承自Object,当你调用它的构造函数时,Object类的构造函数会在某个时候被隐式调用,所以你需要构建新对象的能力。

public class Foo {   // implicitly inherits from Object
    public Foo() {
        super(); // Object default constructor call
    }
}

public class Bar extends Foo {
    public Bar() {
        super(); // Foo default constructor call
    }
}

Bar b = new Bar();  // new Bar() calls new Foo() that calls new Object()

值得注意的是,super()(超类构造函数)的调用将被编译器隐含地插入。

答案 3 :(得分:0)

使用new运算符,为对象分配内存,并调用其构造函数。 通常,创建Object类的实例在日常编码中不会出现太多。知道你制作的每个课程都来自于对象也很重要。