DataInformationとEventDataはgetterとsetterを端折って書いているものと想定して回答します。
とりあえず、以下の実装を眺めて見てほしいです。
Java
1package Tera20211122;
2
3import java.util.ArrayList;
4import java.util.List;
5
6public class Main {
7
8 public static void main(String[] args) {
9
10 // 恐らく取得しようとしているデータの入った箱
11 List<EventData> list = new ArrayList<EventData>();
12
13 // 前提データの生成
14 // 内容は適当
15 for(int i = 0; i < 100; i++) {
16 DataInformation dataInformation = new DataInformation();
17 dataInformation.setDataType("hoge");
18 dataInformation.setFileName("hogeFile");
19 dataInformation.setNoticeFileData("通知データ" + i);
20
21 EventData eventData = new EventData();
22 eventData.setEventId((long)i);
23 eventData.setEventType("eventHoge");
24 eventData.setNoticeData(dataInformation);
25
26 list.add(eventData);
27 }
28
29 //n番目のEventDataクラスにあるDataInformationクラスのnoticeDataの内容を取得したい
30 int n = 10; // 0開始にご注意
31
32 // やりたい事への回答
33 Object eventGetNoticeData = list.get(n).getNoticeData();
34 if ("DataInformation".equals(eventGetNoticeData.getClass().getSimpleName())) {
35 DataInformation dataInformation = (DataInformation)eventGetNoticeData;
36 System.out.println(dataInformation.getNoticeFileData());
37 } else {
38 // DataInformation以外だった場合の処理
39 }
40 }
41}
実行結果
回答のポイントを説明します。
まず、リストという事ですので、リストから取得する実装が必要です。
上記の参考からですと、
Java
1Object eventGetNoticeData = list.get(n).getNoticeData();
の部分になります。
次のポイントは「型」です。
EventData.noticeDataは「Object」型です。
Object型にgetNoticeFileData()というメソッドは実装されていません。
ただ前提として、noticeDataはDataInformationのオブジェクトがあるという事ですので、
キャストが可能と思います。
それが
Java
1DataInformation dataInformation = (DataInformation)eventGetNoticeData;
の部分になります。
如何でしょうか。
ちなみに、
Java
1if ("DataInformation".equals(eventGetNoticeData.getClass().getSimpleName())) {
の部分は、noticeDataは必ずしもDataInformationではない、という想定で判定処理を入れています。
仕様によっては不要です。