質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

3294閲覧

Listのキャストができないでいます。

Y.Mamoru

総合スコア47

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2020/10/24 13:33

編集2020/10/24 13:46

〇やりたいこと

自作のクラスLoopListFormクラス型のListを、これまた自作のクラスUserActionForm型のList
にキャストしたいと考えています。

そのままではできないので調べているのですが、Object型に一度アップキャストをすればいいのかな?と考えているのですが、そのやり方もいまいち要領を得ません。

初歩的な質問だとは思うのですが、アドバイスをお願いします。

※UserActionFormはsetter,getterクラス。LoopListFormはListを、別のListに格納するクラスです。

UserActionForm

1package model; 2 3import java.sql.Date; 4import java.sql.Timestamp; 5 6import org.apache.struts.action.ActionForm; 7 8public class UserActionForm extends ActionForm { 9 10 private String userID; 11 private String password; 12 private String auth; 13 private String sectionID; 14 private String name; 15 private String birthyear; 16 private String birthmonth; 17 private String birthdate; 18 private String birthday; 19 private String sex; 20 private String address; 21 private String mail; 22 private String qual; 23 private Date createDate; 24 private String createUser; 25 private Date Date; 26 private String updateUser; 27 private String invalidFlag; 28 private String hiddenID; 29 private String action; 30 private String attendance; 31 private Timestamp time; 32 private int workTime; 33 private int overTime; 34 private int earlyCount; 35 private int lateCount; 36 private int works; 37 private int Hour; 38 private int Minutes; 39 40 public int getEarlyCount() { 41 return earlyCount; 42 } 43 public void setEarlyCount(int earlyCount) { 44 this.earlyCount = earlyCount; 45 } 46 public int getLateCount() { 47 return lateCount; 48 } 49 public void setLateCount(int lateCount) { 50 this.lateCount = lateCount; 51 } 52 public int getOverTime() { 53 return overTime; 54 } 55 public void setOverTime(int overTime) { 56 this.overTime = overTime; 57 } 58 public int getHour() { 59 return Hour; 60 } 61 public void setHour(int Hour) { 62 this.Hour = Hour; 63 } 64 65 public int getMinutes() { 66 return Minutes; 67 } 68 public void setMinutes(int Minutes) { 69 this.Minutes = Minutes; 70 } 71 72 public int getWorks() { 73 return works; 74 } 75 public void setWorks(int works) { 76 this.works = works; 77 } 78 79 public int getWorkTime() { 80 return workTime; 81 } 82 public void setWorkTime(int workTime) { 83 this.workTime = workTime; 84 } 85 86 public Timestamp getTime() { 87 return time; 88 } 89 public void setTime(Timestamp time) { 90 this.time = time; 91 } 92 93 public String getAttendance() { 94 return attendance; 95 } 96 public void setAttendance(String attendance) { 97 this.attendance = attendance; 98 } 99 100 public String getAction() { 101 return action; 102 } 103 public void setAction(String action) { 104 this.action = action; 105 } 106 107 public String getHiddenID() { 108 return hiddenID; 109 } 110 public void setHiddenID(String hiddenID) { 111 this.hiddenID = hiddenID; 112 } 113 114 public String getUserID() { 115 return userID; 116 } 117 public void setUserID(String userID) { 118 this.userID = userID; 119 } 120 121 public String getPassword() { 122 return password; 123 } 124 public void setPassword(String password) { 125 this.password = password; 126 } 127 128 public String getName() { 129 return name; 130 } 131 public void setName(String name) { 132 this.name = name; 133 } 134 135 public String getBirthyear() { 136 return birthyear; 137 } 138 public void setBirthyear(String birthyear) { 139 this.birthyear = birthyear; 140 } 141 142 public String getBirthmonth() { 143 return birthmonth; 144 } 145 public void setBirthmonth(String birthmonth) { 146 this.birthmonth = birthmonth; 147 } 148 149 public String getBirthdate() { 150 return birthdate; 151 } 152 public void setBirthdate(String birthdate) { 153 this.birthdate = birthdate; 154 } 155 156 public String getBirthday() { 157 return birthday; 158 } 159 public void setBirthday(String birthday) { 160 this.birthday = birthday; 161 } 162 163 public String getSex() { 164 return sex; 165 } 166 public void setSex(String sex) { 167 this.sex = sex; 168 } 169 170 public String getMail() { 171 return mail; 172 } 173 public void setMail(String mail) { 174 this.mail = mail; 175 } 176 177 public Date getCreateDate() { 178 return createDate; 179 } 180 public void setCreateDate(Date createDate) { 181 this.createDate = createDate; 182 } 183 184 public Date getDate() { 185 return Date; 186 } 187 public void setDate(Date Date) { 188 this.Date = Date; 189 } 190 191 public String getAuth() { 192 return auth; 193 } 194 public void setAuth(String auth) { 195 this.auth = auth; 196 } 197 198 public String getSectionID() { 199 return sectionID; 200 } 201 public void setSectionID(String sectionID) { 202 this.sectionID = sectionID; 203 } 204 205 public String getAddress() { 206 return address; 207 } 208 public void setAddress(String address) { 209 this.address = address; 210 } 211 212 public String getQual() { 213 return qual; 214 } 215 public void setQual(String qual) { 216 this.qual = qual; 217 } 218 219 public String getCreateUser() { 220 return createUser; 221 } 222 public void setCreateUser(String createUser) { 223 this.createUser = createUser; 224 } 225 226 public String getUpdateUser() { 227 return updateUser; 228 } 229 public void setUpdateUser(String updateUser) { 230 this.updateUser = updateUser; 231 } 232 233 public String getInvalidFlag() { 234 return invalidFlag; 235 } 236 public void setInvalidFlag(String invalidFlag) { 237 this.invalidFlag = invalidFlag; 238 } 239} 240

LoopListForm

1package model; 2 3import java.util.List; 4 5import org.apache.struts.action.ActionForm; 6 7public class LoopListForm extends ActionForm { 8 private List<UserActionForm> loop; 9 10 public void setLoop(List<UserActionForm> list) { 11 loop = list; 12 } 13 public List<UserActionForm> getLoop(){ 14 return loop; 15 } 16} 17

今の使い方としては、UserActionForm型のListのSetterに値を代入し、
そのListをLoopListFormに格納しています。

java

1List<UserActionForm> list = new ArrayList<UserActionForm>(); 2LoopListForm loop = new LoopListForm(); 3~省略~ 4UserActionForm uafList = new UserActionForm(); 5 uafList.setUserID(userID); 6 uafList.setWorkTime(workingTime); 7 uafList.setOverTime(overTime); 8 uafList.setEarlyCount(earlyCount); 9 uafList.setLateCount(lateCount); 10 uafList.setWorks(count); 11 12 list.add(uafList); 13 loop.setLoop(list); 14 } 15 16} 17 18 19 request.setAttribute("LoopListForm", loop); 20 21~省略~

setAttributeした値はJSPで受け取っているのですが、
そこでキャストするときに詰まっています。

JSP

1<% 2 3List<model.LoopListForm> list = (List)request.getAttribute("LoopListForm"); //ここでキャストする方法がわからない。 4if(list != null){ 5System.out.println(list); 6System.out.println(list.size()); 7for(int i = 0 ; i < list.size() ; i++){ 8 9model.UserActionForm uaf = list.get(i); 10 11%> 12 13<label>名前:?</label><br> 14<label>今月の勤務時間の合計:<%= uaf.getWorkTime() %>分</label><br> 15<label>今月の残業時間の合計:<%= uaf.getOverTime() %>分</label><br> 16<label>勤務日数:<%= uaf.getWorks() %>日</label><br> 17<label>遅刻日数:<%= uaf.getLateCount() %>日</label><br> 18<label>早退日数:<%= uaf.getEarlyCount() %>日</label><br> 19★★★★★ 20 21<br>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shiketa

2020/10/24 13:38

LoopListForm型とUserActionForm型の関係がわからないとなんとも。ソースを提示されてはいかがかと。
Y.Mamoru

2020/10/24 13:47

コメントありがとうございます。 修正しました。
guest

回答1

0

ベストアンサー

そこでキャストするときに詰まっています。

Javaのキャストは「数値型同士での変換」と、「同じデータの型だけ読み替える」という2つの意味しかありません。今したいことは、キャストでは実現できません

投稿2020/10/24 14:07

maisumakun

総合スコア145208

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/10/24 14:09

いちばん原始的に、「List<model.LoopListForm>となるListを別に作成して、中身を1つずつ変換しながらコピーしていく」ような方法がいちばん確実です(もう少しエレガントな書き方も考えられますが、結局実行することは1つ1つの変換です)。
Y.Mamoru

2020/10/24 14:17

なるほど(><) そうなってしまうんですね。 勉強になりました!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問