以下に示すように、継承を使用して Grails でドメイン クラスをモデル化しました。
abstract class Profile{
}
class Team extends Profile{
}
class User extends Profile{
}
class B{
static hasMany = [profiles: Profile]
}
コントローラーの後半で、クラス B からすべてのプロファイルを取得するときに、一部のプロファイルを Team または User にキャストしたいのですが、java.lang.ClassCastException または GroovyCastException を取得するためできません。それらはチームまたはユーザーとして保存されます (データベース内の属性クラスを使用)。私が試した方法は次のとおりです。
def team1 = b.profiles.toList()[0] as Team
def team1 = (Team)b.profiles.toList()[0]
動的言語では通常のように、型を記述せずに使用するだけで機能します。
def team1 = b.profiles.toList()[0]
しかし、どのクラスを使用しているのかわかりません。とにかく、親クラスを子にキャストするグルービーまたはゴームはありますか?