2016-06-24 12 views
6

次のコードの正当な使用はどのようなものでしょうか?オブジェクトコンストラクタの正当な使用はありますか?

Object o =new Object(); 

私は、このオブジェクトが使用していないと(多分そのハッシュコードを除く)は実際のデータを搬送していない理解して何から。なぜこれを使うのですか?それは容認できる習慣ですか?これを行うことができれば、オブジェクトクラスを明示的に拡張できます。

+7

:あなたはこのように、匿名クラスのオブジェクトを拡張することができます。 –

+0

理想的には、AtomicReference fooを使用しないでください。 –

+1

なぜあなたは明示的に 'Object'を拡張できませんでしたか?これは*暗黙の*デフォルトです。 –

答えて

8

オブジェクト

私は、このオブジェクトが使用していないと(多分そのハッシュコードを除く)は実際のデータを搬送していない理解して何から、そのアイデンティティとそのmonitorを運びます。そのため、この割り当ては、オブジェクト自体とは別のオブジェクトモニタを作成するために使用されます。

なぜこれが使用されますか?容認できる練習ですか?

これは、オブジェクトを他のオブジェクトのモニタとして使用するために使用した唯一の使用方法です。

これを行うことができれば、明示的にオブジェクトクラスを拡張できますか?

絶対に。私は並行処理を行うにははるかに良い方法はありますが、それは、スレッドの明確なロックオブジェクトを作成するために使用さ見てきました

Object obj = new Object() { 
    @Override 
    public String toString() { 
     return "Hello, world!"; 
    } 
}; 
+3

名前付きクラスで 'Object'を拡張することもできます(実際はすべてのクラスが暗黙的に行います)。 – Thilo

+1

よくレイアウトされた質の高い回答をありがとう –

関連する問題