-2

少し疑問があります。実行時にオブジェクトを取得する方法はありますか?

このようなもの:私はEmployeeというクラスを持っていて、次のプロパティname、addrees、idを持っています

今、私は従業員のオブジェクトを持っていますが、特定の条件に応じてプロパティの 1 つを取得する必要があります。

したがって、実行時に emp.getName() または emp.getID() である可能性があります。

どうすればこれを達成できますか?

よろしく、アミット

4

3 に答える 3

1

オブジェクトが getter/setter 命名の JavaBeans 規則に準拠している場合、apache の beanutils ライブラリのPropertyUtils.getPropertyは、この質問で説明されているように、うまく機能するように見えます。

たとえば、次のようなことができます

String field = "name.lastname"; // or could be read dynamically from user input
Object value = PropertyUtils.getProperty(emp, field);

ネストされたプロパティを処理します。

于 2012-04-23T17:44:13.347 に答える
1

試す

String str = (condition) ? emp.getName() : emp.getID();

また

final String str;
switch(userSelectedField) {
   case "lastname": str = emp.getName().getLastName(); break;
   case "zipcode": str = emp.getCountry().getState().getZipCode(); break;
   default: /* report an error */
}
于 2012-04-23T17:24:13.010 に答える
0

何百ものプロパティがある場合 (コメントで述べたように)、1 つのオプションは、それらすべてをMap<String, SomeType>. アクセスは非常に簡単です。キーに String (または Enum) を渡します。主な欠点は、それらの値がすべて SomeType (おそらく実際には文字列) であり、その一部を整数、日付などにしたい場合があることです。その場合、いくつかのオプションがあります。

  1. 呼び出し元は、型と解析を知っている必要があります。たとえば、Map は日付を文字列 "01/23/1967" として格納します。呼び出し元は KEY_BIRTHDAY を日付に変換する必要があることを認識していますが、呼び出し元がこれを日付に変換するために使用するユーティリティ コードがあります。

  2. または、Map は、おそらくMap<String, Class>各値のクラスを持つ別の型を介して型を認識し、Map は変換を行います。

于 2012-04-23T17:42:12.970 に答える