Cześć,
mam taki kod w metodzie i w zaleznosci od warunku wywoluje inne metody:
...
for (Field f : fieldList) {
f.setAccessible(true);
if (f.getName().equals(e.getKey())) {
try {
if (f.getType() == FList.class
&& e.getKey().equals("pVal")) {
f.set(r, analyzepVal(r, el));
} else if (f.getType() == FList.class
&& e.getKey().equals("Ver")) {
f.set(r, analyzeVerVal(r, el));
} else if (f.getType() == FList.class
&& e.getKey().equals("APart")) {
f.set(r, analyzeAPartVal(r, el));
} else if (f.getType() == FList.class
&& e.getKey().equals("oRel")) {
f.set(r, analyzeARVal(r, el));
} else if (f.getType() == Boolean.TYPE) {
f.set(r, el.getAsBoolean());
} else
f.set(r, el.getAsString());
...
}
}
...
te metody sa bardzo podobne, da sie to jakos sprytnie zrobic aby z tych 4 metod zrobic jedna ogolna (bo nie widze tego)?
private EOCFList<AR> analyzeARVal(T r,
JsonElement el)
{
EOCFList<AR> AR = new EOCFList<AR>(
AR.class, (AImpl) r,
EP.A__OWNED_REL);
JsonArray ar = el.getAsJsonArray();
for (int i = 0; i < ar.size(); ++i) {
String obj = ar.get(i).toString();
ARImplDeserializer<ARImpl> vD = new ARImplDeserializer<ARImpl>();
ARImpl ARImpl = vD.deserialize(obj,
ARImpl.class);
AR.add(ARImpl);
}
return AR;
}
private EOCFList<A> analyzeAPartVal(T r,
JsonElement el)
{
EOCFList<A> APart = new EOCFList<A>(
A.class, (AImpl) r,
EP.A__A_PART);
JsonArray ar = el.getAsJsonArray();
for (int i = 0; i < ar.size(); ++i) {
String obj = ar.get(i).toString();
AImplDeserializer<AImpl> vD = new AImplDeserializer<AImpl>();
AImpl AImpl = vD.deserialize(obj, AImpl.class);
APart.add(AImpl);
}
return APart;
}
private EOCFList<Ver> analyzeVerVal(T r,
JsonElement el)
{
EOCFList<Ver> Ver = new EOCFList<Ver>(
Ver.class, (AImpl) r,
EP.A__Ver);
JsonArray ar = el.getAsJsonArray();
for (int i = 0; i < ar.size(); ++i) {
String obj = ar.get(i).toString();
VerImplDeserializer<VerImpl> vD = new VerImplDeserializer<VerImpl>();
VerImpl VerImpl = vD.deserialize(obj, VerImpl.class);
Ver.add(VerImpl);
}
return Ver;
}
private EOCFList<Val> analyzepVal(T r,
JsonElement el)
{
EOCFList<Val> pVal = new EOCFList<Val>(
Val.class, (AImpl) r,
EP.A__PROPERTY_Val);
JsonArray ar = el.getAsJsonArray();
for (int i = 0; i < ar.size(); ++i) {
String obj = ar.get(i).toString();
ValImplDeserializer<ValImpl> vD = new ValImplDeserializer<ValImpl>();
ValImpl ValImpl = vD.deserialize(obj, ValImpl.class);
pVal.add(ValImpl);
}
return pVal;
}
dzieki za wskazowki