1.需求场景
有时候一个类里面有很多的属性,我们需要把这些类的名字单独拎出来处理,比如说手动配置 mybatis 的 Mapper 文件,这个时候手动的去拷贝这些属性将会变得非常枯燥,这个时候我们可以使用一个类自动的帮我们把这些属性给获取出来,按照我们需要的格式给输出出来,这大大节省了我们自己的时间,而且不会出错。
2.一个测试类
/**
* Project Name:test
* File Name:Test.java
* Package Name:com.test.field
* Date:2017年2月24日上午10:39:30
*
*/
package com.test.field;
/**
* ClassName:Test <br/>
* Date: 2017年2月24日 上午10:39:30 <br/>
* @author ztd
* @version
* @see
*/
public class Test {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
3.获取这个类所有属性的工具类
/**
* Project Name:test
* File Name:GetField.java
* Package Name:com.test.field
* Date:2017年2月24日上午10:39:20
*
*/
package com.test.field;
import java.lang.reflect.Field;
/**
* ClassName:GetField <br/>
* Date: 2017年2月24日 上午10:39:20 <br/>
* @author ztd
* @version
* @see
*/
public class GetFieldNamesUtils {
public static void main(String[] args) {
getFiledsNameWithBlankLine("com.test.field.Test");
System.out.println("===================");
getFiledsNameWithPoint("com.test.field.Test");
}
/**
* 把属性通过换行的方式输出出来
* @author ztd
* @param classPath
*/
private static void getFiledsNameWithBlankLine(String classPath) {
Class<?> clazz = null;
try {
clazz = Class.forName(classPath);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Field[] fields = clazz.getDeclaredFields();
for(Field f : fields) {
System.out.println(f.getName());
}
}
/**
* 把属性通过“,”连接起来输出
* @author ztd
* @param classPath
*/
private static void getFiledsNameWithPoint(String classPath) {
Class<?> clazz = null;
try {
clazz = Class.forName(classPath);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Field[] fields = clazz.getDeclaredFields();
StringBuffer sb = new StringBuffer();
for(Field f : fields) {
sb.append(f.getName()).append(",");
}
System.out.println(sb.toString());
}
}
4.效果:
id
name
===================
id,name,