{"id":693,"date":"2023-02-26T14:57:27","date_gmt":"2023-02-26T06:57:27","guid":{"rendered":"https:\/\/www.appblog.cn\/?p=693"},"modified":"2023-04-29T17:55:36","modified_gmt":"2023-04-29T09:55:36","slug":"using-java-reflection-mechanism-to-obtain-all-attributes-and-their-corresponding-values-of-entity-objects","status":"publish","type":"post","link":"https:\/\/www.appblog.cn\/index.php\/2023\/02\/26\/using-java-reflection-mechanism-to-obtain-all-attributes-and-their-corresponding-values-of-entity-objects\/","title":{"rendered":"\u5229\u7528Java\u53cd\u5c04\u673a\u5236\u83b7\u53d6\u5b9e\u4f53\u5bf9\u8c61\u6240\u6709\u5c5e\u6027\u53ca\u5176\u5bf9\u5e94\u503c"},"content":{"rendered":"<ul>\n<li>\u5229\u7528Java\u53cd\u5c04\u673a\u5236\u83b7\u53d6\u5b9e\u4f53\u5bf9\u8c61\u6240\u6709\u5c5e\u6027<\/li>\n<li>\u5229\u7528<code>PropertyDescriptor<\/code>\u7684<code>getReadMethod()<\/code>\u548c<code>getWriteMethod()<\/code>\u65b9\u6cd5\u5f97\u5230Getter\u548cSetter\u65b9\u6cd5<\/li>\n<\/ul>\n<p>PropertyDescriptor\u4f9d\u8d56\u4e8eopenbeans\u5e93<\/p>\n<p>openbeans\uff1a<a target=\"_blank\" rel=\"noopener\" href=\"https:\/\/code.google.com\/archive\/p\/openbeans\/\">https:\/\/code.google.com\/archive\/p\/openbeans\/<\/a><\/p>\n<p><!-- more --><\/p>\n<pre><code class=\"language-java\">public class ReflectHelper {\n\n    public static List&lt;Reflect&gt; getProperty(Object object, String exclude) {\n        if (object == null) return null;\n        List&lt;Reflect&gt; reflectList = null;\n        Reflect reflect = null;\n        Class clazz = object.getClass();\n        Field[] fields = clazz.getDeclaredFields();\n        if (fields != null &amp;&amp; fields.length &gt; 0) {\n            reflectList = new ArrayList&lt;&gt;();\n            try {\n                for (int i = 0; i &lt; fields.length; i++) {\n                    Field field = fields[i];\n                    JSONField jsonField = field.getAnnotation(JSONField.class);\n                    if (jsonField != null &amp;&amp; !jsonField.serialize()) {\n                        continue;\n                    }\n                    if (!TextUtils.isEmpty(exclude) &amp;&amp;\n                            ((jsonField != null &amp;&amp; exclude.equals(jsonField.name())) || exclude.equals(field.getName()))) {\n                        continue;\n                    }\n                    \/\/Parcelable\u5bf9\u8c61\n                    if (object instanceof Parcelable &amp;&amp; &quot;CREATOR&quot;.equals(field.getName())) {\n                        continue;\n                    }\n                    PropertyDescriptor pd = new PropertyDescriptor(field.getName(), clazz);\n                    Method getMethod = pd.getReadMethod();\n                    if (getMethod != null) {\n                        reflect = new Reflect();\n                        if (jsonField != null) {\n                            reflect.setFieldName(jsonField.name());\n                        } else {\n                            reflect.setFieldName(field.getName());\n                        }\n                        reflect.setFieldType(field.getType());\n                        reflect.setFieldValue(getMethod.invoke(object));\n                        reflectList.add(reflect);\n                    }\n                }\n            } catch (IllegalAccessException e) {\n                e.printStackTrace();\n            } catch (InvocationTargetException e) {\n                e.printStackTrace();\n            } catch (IntrospectionException e) {\n                e.printStackTrace();\n            }\n        }\n        return reflectList;\n    }\n\n    public static List&lt;Reflect&gt; getProperty(Object object, List&lt;String&gt; excludeList) {\n        if (object == null) return null;\n        List&lt;Reflect&gt; reflectList = null;\n        Reflect reflect = null;\n        Class clazz = object.getClass();\n        Field[] fields = clazz.getDeclaredFields();\n        if (fields != null &amp;&amp; fields.length &gt; 0) {\n            reflectList = new ArrayList&lt;&gt;();\n            try {\n                for (int i = 0; i &lt; fields.length; i++) {\n                    Field field = fields[i];\n                    JSONField jsonField = field.getAnnotation(JSONField.class);\n                    if (jsonField != null &amp;&amp; !jsonField.serialize()) {\n                        continue;\n                    }\n                    if (excludeList != null &amp;&amp; excludeList.size() &gt; 0 &amp;&amp;\n                            ((jsonField != null &amp;&amp; excludeList.contains(jsonField.name())) || excludeList.contains(field.getName()))) {\n                        continue;\n                    }\n                    \/\/Parcelable\u5bf9\u8c61\n                    if (object instanceof Parcelable &amp;&amp; &quot;CREATOR&quot;.equals(field.getName())) {\n                        continue;\n                    }\n                    PropertyDescriptor pd = new PropertyDescriptor(field.getName(), clazz);\n                    Method getMethod = pd.getReadMethod();\n                    if (getMethod != null) {\n                        reflect = new Reflect();\n                        if (jsonField != null) {\n                            reflect.setFieldName(jsonField.name());\n                        } else {\n                            reflect.setFieldName(field.getName());\n                        }\n                        reflect.setFieldType(field.getType());\n                        reflect.setFieldValue(getMethod.invoke(object));\n                        reflectList.add(reflect);\n                    }\n                }\n            } catch (IllegalAccessException e) {\n                e.printStackTrace();\n            } catch (InvocationTargetException e) {\n                e.printStackTrace();\n            } catch (IntrospectionException e) {\n                e.printStackTrace();\n            }\n        }\n        return reflectList;\n    }\n\n    public static class Reflect implements Comparable&lt;Reflect&gt; {\n        private String fieldName;\n        private Class fieldType;\n        private Object fieldValue;\n\n        public String getFieldName() {\n            return fieldName;\n        }\n\n        public void setFieldName(String fieldName) {\n            this.fieldName = fieldName;\n        }\n\n        public Class getFieldType() {\n            return fieldType;\n        }\n\n        public void setFieldType(Class fieldType) {\n            this.fieldType = fieldType;\n        }\n\n        public Object getFieldValue() {\n            return fieldValue;\n        }\n\n        public void setFieldValue(Object fieldValue) {\n            this.fieldValue = fieldValue;\n        }\n\n        @Override\n        public int compareTo(@NonNull Reflect reflect) {\n            return fieldName.compareTo(reflect.fieldName);\n        }\n    }\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u5229\u7528Java\u53cd\u5c04\u673a\u5236\u83b7\u53d6\u5b9e\u4f53\u5bf9\u8c61\u6240\u6709\u5c5e\u6027 \u5229\u7528PropertyDescriptor\u7684getReadMethod [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[43],"tags":[199],"class_list":["post-693","post","type-post","status-publish","format-standard","hentry","category-java-basic","tag-199"],"_links":{"self":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/693","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/comments?post=693"}],"version-history":[{"count":0,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/693\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/media?parent=693"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/categories?post=693"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/tags?post=693"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}