2
JAXBによって生成されたクラスはたくさんあり、変更することはできません。オブジェクトのいくつかのプロパティの値をかなり似た方法で取得してから、それらにテーブルを設定する必要があります。同じ名前で異なる戻り値を持つ異なる型のオブジェクトのメソッドを呼び出す方法は?
private String getPropertyIdentifierStringOrNull(IdentifierType obj)
{
if(obj != null)
return obj.getValue();
else
return null;
}
private XMLGregorianCalendar getPropertyXMLGregorianCalendarOrNull(DateType obj)
{
if(obj != null)
return obj.getValue();
else
return null;
}
DATETYPEをしてIdentifierTypeは共通supperclassを持っていないし、このサンプルコードのように戻り値は、異なるタイプのものとすることができる:ここで私は、そのような2つのgetterメソッドのコードを与えています。
私はこれらの束の代わりに1つの方法を書こうとしています。
@SuppressWarnings("unchecked")
private <T> T getPropertyOrNull(Object obj)
{
if(obj != null)
{
try
{
return (T) obj.getClass().getMethod("getValue").invoke(obj);
} catch (Exception e)
{
e.printStackTrace();
}
}
return null;
}
このような種類の呼び出しを行うには、この方法が適していますか、それとも良い解決策はありますか?
私はそれが完璧だと思います。これらのクラスのスーパーインタフェースを追加できない限り、リフレクションが必要です。 –
ありがとう@Tamas、あなたは非常に高速でした。 – milijan