クラスを引数として受け取る、使用する必要があるレガシー ライブラリに Java メソッドがあるとします。
public void takeClass(Class<? extends JavaClass> cls);
ここで、JavaClass を拡張する Ceylon クラスがあるとします。
shared class CeylonClass() extends JavaClass() {}
takeClass
さて、これが機能するようにセイロンでメソッドを使用するにはどうすればよいですか?
javaThing.takeClass( `class CeylonClass` );
// or maybe this should work?
javaThing.takeClass( javaClass<CeylonClass>() );
上記のように、javaClass
モジュール内で機能を試してみましたがceylon.interop.java
成功しませんでした...javaClass<JavaClass>()
そうすると動作しますが、もちろんこれは私には役に立ちません。
編集:
上記のように使用すると発生するエラーjavaClass<CeylonClass>()
:
argument must be assignable to parameter class of takeClass:
Class<CeylonClass> is not assignable to Class<JavaClass>?