1
私はパラメータとしてjava.lang.Classオブジェクトをとるメソッドを持っています。どのように私はセイロンのクラスからそれを取得するのですか?ceylonでは、クラスオブジェクトからClassオブジェクトを取得するにはどうすればよいですか?
I.e. javaのSomeClass.class
に相当します。
私はパラメータとしてjava.lang.Classオブジェクトをとるメソッドを持っています。どのように私はセイロンのクラスからそれを取得するのですか?ceylonでは、クラスオブジェクトからClassオブジェクトを取得するにはどうすればよいですか?
I.e. javaのSomeClass.class
に相当します。
SomeClass.class
の場合は、閉鎖モデルの場合は`SomeClass`
、公開宣言の場合は`class SomeClass`
です。
someInstance.class
の場合はtype
の機能をceylon.language.meta
から使用できます。 Try it!
import ceylon.language.meta { type }
class C() {}
class D() extends C() {}
shared void run() {
C c = D();
print(type(c));
}
(type
は、閉じられたモデルを返しすなわち適用される型引数を持つ;。。。あなたは.declaration
で開いた宣言を得ることができます)
これは 'のjava.langを返しませんしかし、「クラス」。 [ceylon.interop.java](https://modules.ceylon-lang.org/repo/1/ceylon/interop/)から 'javaClass'、' javaClassFromDeclaration'、 'javaClassFromModel'または' javaClassFromInstance'を使う必要があります。 java/1.3.2/module-doc/api/index.html)を参照してください。 –
はい、しかし、OPは、特に "Javaの" SomeClass.class'に相当する_ "を求めました。私はそれが、オペレーションがセイロンのメタプログラミング施設に興味を持っていたことを意味するものです。 –
彼はまた、「java.lang.Classオブジェクトをパラメータとして取るメソッド」と書いています。 – Quintesse