クラスEtcStructのオブジェクトのitemsDataというリストがありますが、クラスは使用したいファイルによって異なります(クラスは変数setterとgetterでいっぱいです) :メソッドに渡されたオブジェクトを元の型にキャストするJava
ObservableList<EtcStruct> itemsData = FXCollections.observableArrayList();
私はどのオブジェクトタイプでも動作するはずのメソッドに渡しています。ファイルから呼び出されたメソッドを選択して実行します。
作品以上public static void parseToFile(ObservableList itemsData){
EtcStruct itemObject = (EtcStruct) itemsData.get(0);
System.out.print((int)reflectedmethod.invoke(itemObject);
}
コードが、私は何を達成したいことは、私が使用する予定のどんなstructclassため、それをより柔軟にするために、それのオブジェクトタイプを編集せずに方法を働かせるです。
構造クラス名と.getClass()を渡して何かを試してみましたが、元の型を返しますが、itemsData元の型の新しいオブジェクトを作成し、itemsDataオブジェクトをキャストするために何をするべきかわかりません。
public static void parseToFile(ObservableList itemsData,Class c){
Object itemObject = c.newInstance();
Object newobject = curClass.newInstance();
newobject = c.cast(itemsList.get(0));
}
上記は私にとっては馬鹿だと思われ、明らかに仕事はありませんでした。
なぜあなたはそれをキャストしようとしていますか?なぜ生の型を使用していますか? – shmosel
引数をダウンキャストする必要はありません。そうすることは、継承と上書きの目的を破ります。引数が 'Observable'の場合、メソッドは' Observable'ビヘイビアを使用することのみを約束します。 'EtcStruct'の振る舞いが必要な場合は、それを引数の型として宣言してください。また、アーキテクチャミスをハックするためにリフレクションを使用しないでください。これはリフレクションのユースケースではなく、タイプ指向プログラミングやオブジェクト指向プログラミングのユースケースです。 –
Javaで異なる構造のバイナリファイルを解析するにはどうしたらいいですか?私がしようとしていることは、対応するフィールドのセッターとゲッターをただちに生成し、パーサメソッドに反映させることです。 ここで欠落しているのは、どのクラスのstructが呼び出されたかをメソッドに知らせることです。 – kthxbai2