Иногда вы знаете, что находится внутри этого объекта, но по разным причинам вы не можете преобразовать его в объект. Вы просто хотите просто извлечь некоторые вещи из этого объекта. Вы должны использовать отражение в это время.
Если ваш класс выглядит так:
Private Class user {String userName; String userPassword; public String getUsername () {return username;} public void setUsername (string username) {this.username = username;} public String getUserPassword () {return userPass;} public void setUserPassword (String userPass) {this.UserPassword =}}}}}}Мы новое, присвоение значения и преобразовывать вверх в объект
User user = new user (); user.setusername ("xu fenglai"); user.setuserPassword ("1596666"); Object Object = user;Получите имя атрибута и сохраните его в массиве
java.lang.reflect.field [] fields = object.getClass (). getDeclaredFields (); for (java.lang.reflect.field f: fields) {log.i ("xbh", f.getName ());}Выход
12-17 12: 02: 10.199 22949-22949/com.example.wechat i/xbh: это 0 $
12-17 12: 02: 10.199 22949-22949/com.example.wechat i/xbh: имя пользователя
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: $ изменение
12-17 12: 02: 10.199 22949-22949/com.example.wechat i/xbh: serialversionuid
Вы можете видеть, что появляются два имена атрибутов, которые мы определили, а остальные три включены, не беспокоясь о них.
Получите значение атрибута, сначала получите метод получения, а затем получите его, вызывая метод получить.
java.lang.reflect.method [] method = object.getClass (). getDeclaredMethods (); // Получить все методы для (java.lang.reflect.method m: method) {System. <em> out </em> .println (m.getName ()); if (m.getName (). startSwith ("get")) {Object o = null; try {o = m.invoke (Object); } catch (allogalAccessexception | vococationTargetException e) {e.printStackTrace (); } if (o! = null &&! "". }} Выход
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
Что утверждение, которое является методом, чтобы получить начало получить
Invoke in try выполняет этот метод и помещает возвращаемое значение в O
Не получение значений атрибутов с помощью метода GET
java.lang.reflect.field fi = null; // Получить атрибут try {fi = object.getClass (). getDeclaredfield ("username");} catch (nosuchfieldException e) {e.printstacktrace ();} fi.setaccessible (true); // Установите доступительные перминации текущего объекта. {Log.i ("xbh", fi.get (object) .toString ());} catch (allogalaccessexception e) {e.printstacktrace ();} Выход
12-17 12: 17: 34.419 4732-4732/com.example.wechat i/xbh: Xu fenglai
Вы можете получить его непосредственно через метод GetDeclaredField (обратите внимание, что он отличается от метода GetDeclaredFields выше). Но если ваш атрибут является частным, вы определенно не сможете получить к нему доступ, поэтому вы можете получить к нему доступ, установив этот атрибут для публики (SetAccessible).
Кроме того, если вы получаете данные JSON, вам не нужно проанализировать в нем объект, просто преобразуйте его в карту.
например
{"code": 0, "List": [{"username": "3294727437", "userPassword": "xbh1", "userAvatar": "https://img1.imgtn.bdimg.com/it/u/u003d37460727/u0026gp/u003d03d03d03d03d03d03d03d03d0.
Вы получаете следующую коллекцию через jsonarray ("List"), а затем получаете один объект через get (i). На самом деле, объект в начале был преобразован в карту, поэтому проверьте его внимательно. Следовательно, нет необходимости отражать и получать атрибуты. Вы можете напрямую преобразовать в карту для извлечения данных.
нравиться
Map <string, string = ""> map = (map <string, string = "">) u; map.get ("useravatar"); </string,> </string,>Суммировать
Выше приведено все содержание этой статьи о размышлении о Java для получения значения атрибута объекта. Я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!