2

すべてのJavaクラスにはルートクラスがあり、オブジェクトクラスです。そのクラスと自分のクラスの場所を変更できclass MyObject extends Objectますか?それはより機能的にいくつかあります。

このことは可能ですか?

4

4 に答える 4

5

いいえ、できません。コンパイラの問題でもありません。java.lang.Object継承階層のルートは、言語定義、さらにはVM仕様の非常に基本的な事実であるためです。

于 2012-05-04T12:05:19.903 に答える
3

いいえ、これは不可能です。Javaのすべてのオブジェクトは、から派生する必要がありますjava.lang.Object

システム内のすべてのオブジェクトに機能を追加したい場合は、独自のMyObjectクラスを導入し、すべてのクラスがこれから派生していることを確認します。機能を既存のオブジェクトに拡張する場合は、静的ヘルパーメソッドを使用してこれを行います(C#では拡張メソッドを使用しますが、Javaにはそのようなオプションはありません)。

于 2012-05-04T12:05:00.890 に答える
2

私はそのようなことを聞​​いたことがありません。なぜあなたはしたいですか?それはあなた以外の誰かのためにあなたのコードをフォローすることを不可能にするでしょう。そこにあるすべてのJavaプログラマーは、クラスを明示的に拡張するか、Objectを拡張することを前提としています。

クラスの最初に「extendsMyObject」を入れるのは本当に大変な作業ですか?Eclipse(および他のIDE)を自動的に挿入するように構成できると確信しています。

于 2012-05-04T12:08:29.610 に答える
1

これは私には疑わしいアプローチのようですが、バイトコードインストルメンテーション
を 使用してこれをアーカイブできます(ただし、これはコンパイル時ではなく、vminit / classload時に実行されます-使用するインストルメンテーションのタイプによって異なります)。

于 2012-05-04T12:40:04.383 に答える