java 只列印實體類裡的 非 null 屬性

guile發表於2019-02-27

自己寫一個方法:

// 只列印實體類裡的 非 null 屬性
public static void printNotNullProperties(Object source){
	final BeanWrapper src = new BeanWrapperImpl(source);
	java.beans.PropertyDescriptor[] pds = src.getPropertyDescriptors();

	StringBuffer sb = new StringBuffer();
	String className = "";

	for(java.beans.PropertyDescriptor pd : pds){
		Object srcValue = src.getPropertyValue(pd.getName());

		if(srcValue != null){
			if(!pd.getName().equals("class")){
				sb.append(pd.getName() + "=" + srcValue + ", ");
			}else{
				className = ((Class)srcValue).getSimpleName();
			}
		}
	}

	StringBuffer result = new StringBuffer();

	result.append(className);

	result.append(" ");

	result.append("[");

	// 去掉結尾的 ,
	if(sb.length() > 0){
		String content = sb.substring(0, sb.length() - 2);
		result.append(content);
	}

	result.append("]");

	System.out.println(result);
}

 

呼叫:

User user = new User();
user.setUsername( "wang" );
user.setPassword( "123" );
user.setId( 123 );

printNotNullProperties( user ); 

// 列印結果是 User [id=123, password=123, username=wang]

 

如果輸入的引數是 map,要列印它的非空屬性,就需要先把 map 轉成某種 bean,用:https://blog.csdn.net/beguile/article/details/81566380 這種方法

 

相關文章