1. 程式人生 > >獲取Java物件中所有的屬性名稱和屬性值

獲取Java物件中所有的屬性名稱和屬性值

參考文章

1,首先我們建立一個Java實體類Person,並建立屬性name,age,gender,程式碼如下:

public class Person {
	private String name;
	private int age;
	private String gender;
	
	public Person(String n,int a,String g) {
		name = n;
		age = a;
		gender = g;
	}
	
	public String getName() {
		return name;
	}
	
	public int getAge() {
		return age;
	}
	public String getGender() {
		return gender;
	}
}
2、建立物件
Person person = new Person("zhangsan", 30, "男");
3、建立獲取屬性陣列的方法
 
    /**  
     * 獲取屬性名陣列  
     * */  
    private static String[] getFiledName(Object o){  
        Field[] fields=o.getClass().getDeclaredFields();  
        String[] fieldNames=new String[fields.length];  
        for(int i=0;i<fields.length;i++){  
//            System.out.println(fields[i].getType());  
            fieldNames[i]=fields[i].getName();  
        }  
        return fieldNames;  
    }  
4,根據屬性名稱獲取對應的屬性值(通過get方法)
 /* 根據屬性名獲取屬性值  
     * */  
    private static Object getFieldValueByName(String fieldName, Object o) {  
        try {    
            String firstLetter = fieldName.substring(0, 1).toUpperCase();    
            String getter = "get" + firstLetter + fieldName.substring(1);    
            Method method = o.getClass().getMethod(getter, new Class[] {});    
            Object value = method.invoke(o, new Object[] {});    
            return value;    
        } catch (Exception e) {    
          
            return null;    
        }    
    }   
     
5、完美呼叫
StringBuilder sbName = new StringBuilder();
		StringBuilder sbValue = new StringBuilder();
		String[] fieldNames = getFiledName(person);
		 
		  for(int j=0 ; j<fieldNames.length ; j++){     //遍歷所有屬性
	               String name = fieldNames[j];    //獲取屬性的名字
	               Object value = getFieldValueByName(name,person);
	               sbName.append(name);
	               sbValue.append(value);
	                if(j != fieldNames.length - 1) {
	                	sbName.append("/");
	                	sbValue.append("/");
	                }
	              
	              
	        }
	      
	        System.out.println("attribute name:"+sbName.toString()); 
	        System.out.println("attribute value:"+sbValue.toString()); 

6、列印結果:
attribute name:name/age/gender
attribute value:zhangsan/30/男






相關推薦

獲取Java物件所有屬性名稱屬性

參考文章 1,首先我們建立一個Java實體類Person,並建立屬性name,age,gender,程式碼如下: public class Person { private String name

遞迴遍歷獲取複雜物件所有目標屬性(二)

       在利用遞迴遍歷獲取Java複雜物件(物件的屬性仍是物件//list/map)中指定屬性的值(一)中我寫了遞迴遍歷複雜物件中目標屬性,找到第一個目標屬性則退出遍歷。現在有遇到要遍歷複雜物件中所有目標屬性的值。且指定了屬性所在類的類名、屬性型別、屬性

獲取關於 ResultSet 物件列的型別屬性資訊的物件

public interface ResultSetMetaData可用於獲取關於ResultSet物件中列的型別和屬性資訊的物件。以下程式碼片段建立 ResultSet 物件 rs,建立 ResultSetMetaData 物件 rsmd,並使用 rsmd 查詢rs 有

獲取java所有方法及其引數

private void getReflectAllMethod( Class <?> mLocalClass){ Class<?> c; c = mLocalClass; try { do{ Met

jquery獲取 動態表所有的單選框

HTML程式碼,此處為動態生成的表: <table class="table table-striped table-bordered table-hover" id="testtable">     <thead  align="center" styl

java中將實體的傳輸到mybatise後無法獲取物件屬性

可能原因:service與dao未在系統啟動時spring未能將相應的類注入 解決方法:手動獲取類   public static <T> T getBean(Class<T> requiredType) {             return

java獲取物件屬性型別、屬性名稱屬性

因為專案需要用到,於是簡單封裝了一些常用的操作: /** * 根據屬性名獲取屬性值 * */ private Object getFieldValueByName(String fieldName, Object o) { try {

java正則表示式去除html所有的標籤特殊HTML字元

關於java正則表示式去除html中所有的標籤和特殊HTML字元,結合我所做的專案總結的經驗: 總共分為三種:第一種適用於適用短的文章,將文章用正則表示式的方式拼接到程式碼中,有些繁瑣,其實不太實用。第二種就是直接將文件引入,進行更改,但是有一個小缺點,就是文件中的格式可能是utf-8格式的

java物件的三種狀態髒檢查及重新整理快取機制

瞬時狀態   瞬時狀態又稱臨時狀態.如果java物件與資料庫中的資料沒有任何的關聯,即此java物件在資料庫中沒有相關聯的記錄,此時java物件的狀態為瞬時狀態,session對於 瞬時狀態的ava物件是一無所知的,當物件不再被其他物件引用時,它的所有資料也就丟失了,物件將會被java虛擬機器按照垃圾回收

js 獲取字串所有的數字漢字

var re1 = /(\d{1,3})+(?:\.\d+)?/g var re2 = /[\u4e00-\u9fa5]{2,}/g var str="11我22們33兩個"; var arr1 =

js 獲取字符串所有的數字漢字

str 取字符 nbsp 數字 plain dex class var 字符串 var re1 = /(\d{1,3})+(?:\.\d+)?/g var re2 = /[\u4e00-\u9fa5]{2,}/g var str="11我22們33兩個"; var arr1

Python之——獲取電腦連線過的所有wifi名稱密碼

不多說,上程式碼: # -*- coding: UTF-8 -*- import os import sys reload(sys) sys.setdefaultencoding('utf-8') # 定義一個函式checkWIFI,獲取電腦連線過的所有wifi名

java為什麼設定set get 方法操作屬性

樣例一: class person {       public String name ;       public String sex ; } 如上這麼一個類我們可以對它的實體進行:    起名操作,如     person1.name = "小明";   取名操作

servlet獲取表單提交的所有資料名稱

<body> <form action="/day06/RequestDemo1"> 使用者名稱:<input type="text" name="username"><br> 密    碼:<input typ

SQL 讀取資料庫所有資料表的所有約束型別名稱預設

--設計初衷:轉換簡體版本的資料表到繁體版本--使用遊標查詢所有使用者資料表Declare @CurrentTableName nvarchar(250)Declare UserTableCursor Cursor For    --宣告遊標Select name From

關於C++/JAVA的static成員物件成員的說法正確的是:

A:static成員變數在物件構造時候生成 B: static成員函式在物件成員函式中無法呼叫 C: 虛成員函式不可能是static成員函式 D: static成員函式不能訪問static成員變數 答案:c   解釋,(1)類的static成員變數屬於該抽象類,需

遍歷java物件的私有屬性,將null替換為“”

package com.yu.killnull; import java.lang.reflect.Field; import java.lang.reflect.Method; /** * Created with Yang Xiaolei * Date: 2018

遍歷獲取物件屬性屬性

我們不但開發網站,我們還提供網站開發培訓! 郴州網站開發 QQ群:587978628 在JavaScript中,獲取簡單物件的屬性名和屬性值很容易,來看一個稍微複雜點的例子,遍歷獲取下面這個物件的屬性

js獲取session物件屬性

<label for="name">性別</label> <select class="form-control" name="" id="gender" value="${Users.user_gender }">     <opt

java如何把String字串所有的空格製表符(\t)替換成單個符號。

該方法可用於將字串分解成若干有用的陣列。 大致程式碼如下: package test; import java.util.ArrayList; import java.util.List; /**  * @author : suyuyuan  * @date :2016年5