Esto es un poco incómodo de hacer en un solo paso.
Cuando nos mudamos a concepto de polimorfismo existen desafíos como la generación carece de objetos para una clase (clase ABC) la toma de datos de forma dinámica haciendo referencia a otras clases dedicadas (ABCXMLDOMnodes clase, clase ABCHTMLDOMnodes) que contiene mismos campos, pero de tipo estático y definitivo. Espero que tengas el requerimiento.
1.Creating ArrayList of fields Nombres simples de estas tres clases como globales.
private static ArrayList<String> getAllFieldsSimpleNames(Class<?> beanClass) {
ArrayList<String> fieldNames = new ArrayList<String>();
Field[] fields = beanClass.getDeclaredFields();
for (Field field : fields) {
fieldNames.add(field.getName());
}
return fieldNames;
}
2.And entonces cada vez de generar un objeto estamos validando campos (por ejemplo> 10 campos) en contra de las clases de ayuda, como a continuación es fácil que siento.
for(String a :abcFieldNames){
if(abcXMLfieldnames.contains(a)){
//code here
}else if(abcHTMLfieldnames.contains(a){
//code here
}
}
Otra forma más simple y dinámica es la creación de
HashMap<Class<?>, ArrayList<String>> = ...
hm.put(ABC.class, getAllFieldsSimpleNames(ABC.class));
hm.put(ABCXMLDOMnodes.class, getAllFieldsSimpleNames(ABCXMLDOMnodes.class));
if(hm.get(ABCXMLDOMnodes.class).contains("a"){...}
Mi sugerencia a Oracle Corp.La red JAVA es si la "Clase de clase" puede proporcionar un método que devuelva una lista de nombres de campo de una clase determinada, ya que el tipo de cadena solo será útil.
O una SecurityException si no se puede acceder (por ejemplo, 'private') – CrackerJack9
Perfecto, ¡gracias! – emachine
@ CrackerJack9 no, el acceso a campos privados con 'getField()' no arroja 'SecurityException'. – Bombe