A veces sabes lo que hay dentro de este objeto, pero por varias razones, no puedes convertirlo en un objeto. Solo quieres extraer algunas cosas de este objeto. Necesitas usar la reflexión en este momento.
Si tu clase se ve así:
User de clase privada {String UserName; String UserPassword; public String getUsername () {return UserName;} public void setUsername (String username) {this.username = username;} public string getUserPassPassPass () {return userPassword;} public void setUsererword (Wordword)NUEVOS uno, asignamos valor y transformamos hacia arriba en objeto
Usuario user = new User (); user.setUsername ("Xu fenglai"); user.setUserPassword ("1596666"); objeto objeto = usuario;Obtenga el nombre del atributo y guárdelo en una matriz
java.lang.reflect.field [] Fields = object.getClass ().
Producción
12-17 12: 02: 10.199 22949-22949/com.example.wechat i/xbh: este $ 0
12-17 12: 02: 10.199 22949-22949/com.example.wechat i/xbh: nombre de usuario
12-17 12: 02: 10.199 22949-22949/com.example.wechat i/xbh: userPassword
12-17 12: 02: 10.199 22949-22949/com.example.wechat i/xbh: $ cambio
12-17 12: 02: 10.199 22949-22949/com.example.wechat i/xbh: SerialversionUid
Puede ver que aparecen los dos nombres de atributos que definimos, y los otros tres están incluidos sin preocuparse por ellos.
Obtenga el valor del atributo, primero obtenga el método GET y luego obténlo llamando al método GET.
java.lang.reflect.method [] método = object.getClass (). if (m.getName (). startswith ("get")) {objeto o = null; intente {o = m.invoke (objeto); } Catch (ilegalAccessException | InvocationTargetException e) {E.PrintStackTrace (); } if (o! = null &&! "". Equals (o.ToString ())) {log.i ("xbh", o.ToString ()); }} Producción
12-17 12: 09: 33.429 29677-29677/com.example.wechat I/xbh: Xu Fenglai
12-17 12: 09: 33.429 29677-29677/com.example.wechat i/xbh: 1596666
Que si la declaración es el método para obtener el comienzo de Get
Invocar en prueba Ejecuta este método y coloca el valor de retorno en O
No obtener valores de atributo a través del método get
java.lang.reflect.field fi = null; // Obtener el atributo try {fi = object.getClass (). getDeClaredField ("username");} capt (nosuchfieldException e) {e.printstackTrace ();} fi.SetAccessible (verdadero); // Establezca las permissiones de acceso de acceso de la actual {Log.i ("xbh", fi.get (objeto) .ToString ());} Catch (ilegalAccessException e) {E.PrintStackTrace ();} Producción
12-17 12: 17: 34.419 4732-4732/com.example.wechat I/xbh: Xu Fenglai
Puede obtenerlo directamente a través del método GetDeclaredField (tenga en cuenta que es diferente del método GetDeclaredFields anterior). Pero si su atributo es privado, definitivamente no podrá acceder a él, por lo que puede acceder a él configurando este atributo en público (setAccessible).
Además, si está obteniendo datos JSON, no necesita analizar un objeto en él, simplemente transformarlo en un mapa.
Por ejemplo
{"Código": 0, "List": [{"Nombre de usuario": "3294727437", "UserPassword": "xbh1", "UserAvatar": "https://img1.imgtn.bdimg.com/it/u003d37460727/u0026gp/u003d0.jpg"
Obtiene la siguiente colección a través de JSONArray ("Lista"), y luego obtiene un solo objeto a través de Get (I). De hecho, el objeto al principio se convirtió en un mapa, así que verifíquelo cuidadosamente. Por lo tanto, no hay necesidad de reflejar y obtener atributos. Puede transformarse directamente en un mapa para recuperar datos.
como
Map <string, string = ""> map = (map <string, string = "">) u; map.get ("userAvatar"); </string,> </string,>Resumir
Lo anterior es todo el contenido de este artículo sobre la reflexión de Java para obtener un análisis de código de valor de atributo de objeto. Espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!