メソッドまたはコンストラクターの(クラスではなく)呼び出し元インスタンスを取得する

fedevo:

メソッド/コンストラクターの呼び出し元インスタンスを取得することは可能ですか?

この質問はすでに投稿されていますが、回答は常に呼び出し元インスタンスではなく呼び出し元クラス(スタックトレースを使用)に関するものです。ソリューションが存在する場合、オブジェクトグラフを作成し(共通のスーパータイプで)、デフォルトのコンストラクターで親子ナビゲーションを処理するのが非常に便利です。

public class TestCallStack {
    public static class BaseClass {
        BaseClass owner;
//      //ok, this is the correct way to do it
//      public BaseClass(BaseClass owner) {
//          this.owner = owner;
//      }
        public BaseClass() {
            //this.owner = ???????; 
        }
    }
    public static class Parent extends BaseClass {
        Child child = new Child();
    }
    public static class Child extends BaseClass {
    }

    public static void main(String[] args) {
        Parent parent = new Parent();
        System.out.println(parent.child.owner==parent); // must be true
    }
}
ジョン・スキート:

あなたの直感は正しいです-それは不可能です。個人的には、リファクタリングに関してコードをかなり脆弱にするため、それは良いことだと思います(一部のコードを静的メソッドに引き出すことを想像してください-突然、呼び出し元オブジェクトがまったくなくなります)。

ある種の所有者関係を表現したい場合は、その所有者を明示的に提供する必要があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ngOnInitまたはコンストラクターでinitializeメソッドを呼び出します

分類Dev

コンストラクターなしで別のクラスからメソッドを呼び出す方法

分類Dev

コンストラクターなしで別のクラスからメソッドを呼び出す方法

分類Dev

start()を呼び出した後、スレッドのコンストラクターがrun()メソッドに転送されるコントロールではなくmain()に戻るのはなぜですか?

分類Dev

Javaのコンストラクターでメソッドを呼び出すことはできますか?

分類Dev

クラスインスタンスなしでC ++クラスメソッドを呼び出しますか?

分類Dev

コンストラクターで呼び出されたメソッドをspyOnする方法は?

分類Dev

Javaで別のクラスのメインメソッドを呼び出して、呼び出し元のコードに戻ることは可能ですか?

分類Dev

PHP静的ファクトリメソッド:呼び出し元クラスのインスタンスを動的にインスタンス化します

分類Dev

プロトタイプまたは新しく作成されたインスタンスでコンストラクターメソッドを呼び出す必要がありますか?

分類Dev

プロトタイプまたは新しく作成されたインスタンスでコンストラクターメソッドを呼び出す必要がありますか?

分類Dev

Javaでは、クラスコンストラクターからfinal以外のメソッドを呼び出す正当な理由はありますか?

分類Dev

WordPressのカスタムエンドポイントでコールバック関数としてクラスメソッドを呼び出す方法は?

分類Dev

インスタンスでメソッドを呼び出すときにクラスのインポートが不要なのはなぜですか(Java)

分類Dev

クラスAはクラスBインスタンスをインスタンス化します。ClassBのインスタンスはどのようにしてクラスAのメソッドを呼び出すことができますか?

分類Dev

Java:メインクラス内での再帰は、独自のメソッドではなくサブクラスメソッドを呼び出します

分類Dev

サブクラスがベースクラスコンストラクターを呼び出し、サブクラスArduino C ++でベースクラスのインスタンスメソッドを使用する

分類Dev

基本クラスのメソッドが呼び出されるように、派生クラスへのポインターまたは参照を渡します

分類Dev

selfは、新しく作成されたオブジェクトを指します。他のクラスメソッドでは、メソッドが呼び出されたインスタンスを参照します。

分類Dev

コンストラクターでオーバーライド可能なメソッドを呼び出さないのはなぜですか?

分類Dev

Javaラッパー:スーパーコンストラクターで呼び出されたメソッドをオーバーライドします

分類Dev

Java-インスタンスブロックがコンストラクターの後に呼び出されるのはなぜですか、またはコンストラクター内で順序的に呼び出されるのですか?

分類Dev

JavaFXはメインクラスからコントローラーメソッドを呼び出します

分類Dev

クラスは別のクラスをインスタンス化した後、どのようにメソッドを呼び出しますか?

分類Dev

axiosインターセプターハンドラーは、作成されたメソッドがaxios.getを呼び出しているvueコンポーネントインスタンス(このポインター)にどのようにアクセスできますか?

分類Dev

データベースの最初の自動クラスによりCA2214が発生します:コンストラクターでオーバーライド可能なメソッドを呼び出さないでください

分類Dev

C#でコンストラクターを使用してメソッドを呼び出す方法は?

分類Dev

コンストラクター内で変数を作成してメソッドを呼び出す方法は?

分類Dev

引数を使用してベースコンストラクターメソッドを呼び出せないのはなぜですか?

Related 関連記事

  1. 1

    ngOnInitまたはコンストラクターでinitializeメソッドを呼び出します

  2. 2

    コンストラクターなしで別のクラスからメソッドを呼び出す方法

  3. 3

    コンストラクターなしで別のクラスからメソッドを呼び出す方法

  4. 4

    start()を呼び出した後、スレッドのコンストラクターがrun()メソッドに転送されるコントロールではなくmain()に戻るのはなぜですか?

  5. 5

    Javaのコンストラクターでメソッドを呼び出すことはできますか?

  6. 6

    クラスインスタンスなしでC ++クラスメソッドを呼び出しますか?

  7. 7

    コンストラクターで呼び出されたメソッドをspyOnする方法は?

  8. 8

    Javaで別のクラスのメインメソッドを呼び出して、呼び出し元のコードに戻ることは可能ですか?

  9. 9

    PHP静的ファクトリメソッド:呼び出し元クラスのインスタンスを動的にインスタンス化します

  10. 10

    プロトタイプまたは新しく作成されたインスタンスでコンストラクターメソッドを呼び出す必要がありますか?

  11. 11

    プロトタイプまたは新しく作成されたインスタンスでコンストラクターメソッドを呼び出す必要がありますか?

  12. 12

    Javaでは、クラスコンストラクターからfinal以外のメソッドを呼び出す正当な理由はありますか?

  13. 13

    WordPressのカスタムエンドポイントでコールバック関数としてクラスメソッドを呼び出す方法は?

  14. 14

    インスタンスでメソッドを呼び出すときにクラスのインポートが不要なのはなぜですか(Java)

  15. 15

    クラスAはクラスBインスタンスをインスタンス化します。ClassBのインスタンスはどのようにしてクラスAのメソッドを呼び出すことができますか?

  16. 16

    Java:メインクラス内での再帰は、独自のメソッドではなくサブクラスメソッドを呼び出します

  17. 17

    サブクラスがベースクラスコンストラクターを呼び出し、サブクラスArduino C ++でベースクラスのインスタンスメソッドを使用する

  18. 18

    基本クラスのメソッドが呼び出されるように、派生クラスへのポインターまたは参照を渡します

  19. 19

    selfは、新しく作成されたオブジェクトを指します。他のクラスメソッドでは、メソッドが呼び出されたインスタンスを参照します。

  20. 20

    コンストラクターでオーバーライド可能なメソッドを呼び出さないのはなぜですか?

  21. 21

    Javaラッパー:スーパーコンストラクターで呼び出されたメソッドをオーバーライドします

  22. 22

    Java-インスタンスブロックがコンストラクターの後に呼び出されるのはなぜですか、またはコンストラクター内で順序的に呼び出されるのですか?

  23. 23

    JavaFXはメインクラスからコントローラーメソッドを呼び出します

  24. 24

    クラスは別のクラスをインスタンス化した後、どのようにメソッドを呼び出しますか?

  25. 25

    axiosインターセプターハンドラーは、作成されたメソッドがaxios.getを呼び出しているvueコンポーネントインスタンス(このポインター)にどのようにアクセスできますか?

  26. 26

    データベースの最初の自動クラスによりCA2214が発生します:コンストラクターでオーバーライド可能なメソッドを呼び出さないでください

  27. 27

    C#でコンストラクターを使用してメソッドを呼び出す方法は?

  28. 28

    コンストラクター内で変数を作成してメソッドを呼び出す方法は?

  29. 29

    引数を使用してベースコンストラクターメソッドを呼び出せないのはなぜですか?

ホットタグ

アーカイブ