31786


表題の通りなのですが、例えばインスタンスメソッドからならば、次のようにしてクラス名を、クラス名を明示することなしに参照できます。

[code]

    SomeClass {
        public void someMethod() {
            this.getClass();
        }
    }
    
[/code]

static メソッドにおいて、これを実現する方法はありますでしょうか。

`SomeClass.getClass()` とべた書きすればいいといえばいいのですが、スクリプト言語として groovy を利用する場合に、IDE
などを使わずに編集することを考えると、変更箇所はなるべく少なくなるように記述できるならしたいと考えているので、べた書きを避けたいと思って質問しています。


CC BY-SA 3.0
2017-01-11T07:09:26.170
31769
2017-01-12T00:56:00.620
754
question
groovy
groovy で、 static メソッドの中から、それが定義されているクラスオブジェクトを取得したい


似たような質問と回答がありました。

  * [Getting the class name from a static method in Java - Stack Overflow](https://stackoverflow.com/a/936724/4506703)

リンク先にはいくつか方法が提示されていますが、次のものが今回の条件に沿うもので最もノーマルではないでしょうか。

[code]

    new Object(){}.getClass().getEnclosingClass();
    
[/code]

ただしこの方法は、リンク先のコメントにある通り、基底クラスで本処理を実装し、派生クラスから呼び出すと基底クラスが返されます(ので希望に沿わない可能性もあります)。


CC BY-SA 3.0
2017-01-11T10:15:15.727
31776
2017-01-11T10:15:15.727
2017-05-23T12:38:56.083
-1
2808
31769
answer


Groovyではstaticメソッドの中でもthisが使えて、その実体は定義されているClassオブジェクトそのものになります。


CC BY-SA 3.0
2017-01-12T00:56:00.620
31786
2017-01-12T00:56:00.620
2356
31769
answer