私は以下のScalaの階層ました:scalaオブジェクトでinstanceofを使用するにはどうすればよいですか?
sealed trait SessionResult[+T] {
def toOption: Option[T]
}
object SessionResult {
trait SessionValue[T] extends SessionResult[T] {
def session: T
def toOption: Option[T] = Some(session)
}
trait NoSessionValue[T] extends SessionResult[T] {
def toOption: Option[T] = None
}
case class Decoded[T](session: T) extends SessionResult[T] with SessionValue[T]
case class CreatedFromToken[T](session: T) extends SessionResult[T] with SessionValue[T]
case object NoSession extends SessionResult[Nothing] with NoSessionValue[Nothing]
case object TokenNotFound extends SessionResult[Nothing] with NoSessionValue[Nothing]
case object Expired extends SessionResult[Nothing] with NoSessionValue[Nothing]
case class Corrupt(e: Exception) extends SessionResult[Nothing] with NoSessionValue[Nothing]
}
をしかし、私はJavaからこのコードと次のコードを使用するには、コンパイルされません:
SessionResult<SomeSession> sr = ...
System.out.println(sr instanceof NoSession)
なぜ?また、instanceof
を使用して、スカラのオブジェクトのクラスを確認するにはどうすればよいですか?
私は取得していますエラーは次のとおりです。
Inconvertible types; cannot cast SessionResult<SomeSession> to NoSession.
なぜそれは正確にコンパイルされませんか?あなたがすでに 'sr instanceof SessionResult' –
XtremeBaumer
@XtremeBaumerを取得していることを知っているので、私は推測します。_Inconvertible types; SessionResultをNoSession_にキャストできません。 –
Opal
次に、前のコメントで私が次に言ったことを見てください。私はそれが理由だと確信しています – XtremeBaumer