Prinzip: Javas Reflexion kann den Namen des Attributs abrufen und dann über invoke eine Methode der Klasse aufrufen.
Beispielsweise gibt es eine Eigenschaft namens userName, diese Klasse schreibt eine Methode namens getUserName und die getUserName-Methode wird über invoke aufgerufen.
Der Code lautet wie folgt
Kopieren Sie den Codecode wie folgt:
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;
java.util.Map importieren;
öffentliche Klasse ParameterBase
{
/**
* Klassenfeld und Wertezuordnung abrufen
* @zurückkehren
*/
public Map<String, String> getClassInfo()
{
Map<String,String> FieldsAndValues = new HashMap<String, String>();
Feld [] Felder = this.getClass().getDeclaredFields();
for(int i=0; i< field.length; i++)
{
Feld f = Felder[i];
String-Wert = getFieldValue(this,f.getName()).toString();
FieldsAndValues.put(f.getName(),value);
}
return fieldAndValues;
}
privater String getFieldValue(Objektbesitzer, String fieldName)
{
return invokeMethod(owner, fieldName,null).toString();
}
/**
*
* Führen Sie die getField-Methode eines bestimmten Felds aus
*
* @param Besitzerklasse
* @param fieldName Attributname der Klasse
* @param args Parameter, Standard ist null
* @zurückkehren
*/
privates Objekt invokeMethod(Objektbesitzer, String fieldName, Object[] args)
{
Class<? erweitert Object>ownerClass =owner.getClass();
//Feldname -> Feldname
String methodName = fieldName.substring(0, 1).toUpperCase()+ fieldName.substring(1);
Methode method = null;
versuchen
{
method =ownerClass.getMethod("get" + methodName);
}
Catch (SecurityException e)
{
//e.printStackTrace();
}
Catch (NoSuchMethodException e)
{
// e.printStackTrace();
zurückkehren "";
}
// getMethod aufrufen
versuchen
{
return method.invoke(owner);
}
Catch (Ausnahme e)
{
zurückkehren "";
}
}
}
Schreiben Sie eine Benutzerklasse, die von ParameterBase erbt, und schreiben Sie einen Testcode
Kopieren Sie den Codecode wie folgt:
Der Benutzer der öffentlichen Klasse erweitert ParameterBase
{
String userName;
String passWorld;
öffentlicher String getUserName()
{
return Benutzername;
}
public void setUserName(String userName)
{
this.userName = userName;
}
öffentlicher String getPassWorld()
{
return passWorld;
}
public void setPassWorld(String passWorld)
{
this.passWorld = passWorld;
}
public static void main(String[] args)
{
Benutzer u = neuer Benutzer();
u.passWorld = "123";
u.userName = "aaaaa";
System.out.println(u.getClassInfo().toString());
}
}
Programmausgabe
Kopieren Sie den Codecode wie folgt:
{passWorld=123, userName=aaaaa}