オブジェクトのList
を反復しようとしています。以下のような..だからPlay-Framework:ClassCastExceptionが発生しました:java.util.LinkedHashMapをmodels.Systemsにキャストできません
for(System s : usersSystems){
}
どこusersSystems
はタイプList<UserSystems>
です。 usersSystems
は、単にコンストラクタからなる非常に単純なクラスです... usersSystems
を割り当て
public UsersSystems(System system,int ID) {
this.system = system;
this.ID = ID;
}
は初期化され、User
コンストラクタでデフォルト値が与えられuser.sources
にそれが等しくすることによって行われます。以下は私のスタックトレースです。上記のエラーが発生するのはなぜですか?それを修正するにはどうすればよいですか?
play.exceptions.JavaExecutionException: java.util.LinkedHashMap cannot be cast to models.Systems
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:227)
at Invocation.HTTP Request(Play!)
Caused by: java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to models.Systems
at controllers.Start.starting(Start.java:40)
at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:540)
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:498)
at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:474)
at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:469)
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:157)
... 1 more
EDIT:
UserSystem
@Entity
public class UsersSystem extends Model{
public int ID;
public System system;
public UsersSystem(System system, int ID) {
this.source = source;
this.ID = ID;
}
}
SYSTEM
@Entity
public class System extends Model{
private String name;
private int ID;
public System(String name, int ID){
this.name = name;
this.ID = ID;
}
}
あなたのリストには、システムインスタンスが含まれていると最初に言います。次に、Systemはコンストラクタを持つシンプルなクラスであり、SystemではなくUserSystemsという名前のクラスのコンストラクタを表示します。最後に、あなたのリストには、例外に応じてLinkedHashMapインスタンスが含まれ、それをシステムにキャストしようとします(最終的に)。それは4つの異なるタイプになります。あなたはあなたのタイプと非常に混同されているようです。また、リストをインスタンス化して入力するコードを見ることなく、エラーがどこにあるかを伝えることは不可能です。 –
@JBNizet Woops!私はうまくいけば、これはより理にかなって私の質問を明らかにした。 – user596186
私たちにコードを教えてください。 SystemではUsersSystemsが拡張されていますか?もしそうでなければ、あなたが示したコードはコンパイルすべきではないからです。 –