これは重複している可能性がありますが、「as」はグーグルにとって信じられないほど難しいキーワードであり、SOでさえクエリの一部として「as」を無視します。
だから私は「as」を反射的にサポートするクラスをどのように実装するのか疑問に思っています。クラスの例:
クラスX{ プライベートヴァル public X(def v){ val = v } public asType(Class c){ if(c == Integer.class) valを整数として返します if(c == String.class) valを文字列として返す } }
これにより、次のようなことが可能になります。
new X(3) as String
動作するが、役に立たない:
3 as X
文字列と整数の「asType」をなんらかの方法でアタッチ/変更する必要がありますが、このような変更は「X」クラスに限定する必要があると思います...Xクラスは次のようなメソッドを実装できますか。
X fromObject(object)
または、X内からString / Integerクラスを変更します。Xが実際に使用されるまでXでコードを実行しないため、これは難しいようです...Xの最初の使用が「3asX」の場合、Xは次のようになります。 Groovyが呼び出そうとする前にIntegerのasTypeをオーバーライドするチャンスは?