概述
利用java反射输出对象的所有属性,调用对象的方法
public class ClassUtil {
private static final Logger logger = LoggerFactory.getLogger(ClassUtil.class);
public static final boolean isNull(String str){
if(str != null && !str.equals("")){
return false;
}
return true;
}
/**
* 20150729
输出对象的所有属性值
* */
public static String toString(Object obj){
String s = "";
try {
s = getPropertyString(obj);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return s;
}
public static String getPropertyString(Object entityName) throws Exception {
Class<? extends Object> c = entityName.getClass();
Field field [] = c.getDeclaredFields();
StringBuffer sb = new StringBuffer();
sb.append("------ " + " begin ------n");
for(Field f : field){
sb.append(f.getName());
sb.append(" : ");
sb.append(invokeMethod(entityName,f.getName(),null));
sb.append("n");
}
sb.append("------ " + " end ------n");
return sb.toString();
}
public static Object invokeMethod(Object owner, String methodName, Object[] args) throws Exception{
Class<? extends Object> ownerClass = owner.getClass();
methodName = methodName.substring(0, 1).toUpperCase() + methodName.substring(1);
Method method = null;
try {
method = ownerClass.getMethod("get" + methodName);
} catch (SecurityException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
return " can't find 'get" + methodName + "' method";
}
return method.invoke(owner);
}
//20170217 从oss url地址中获取文件名
public static String getFileNameFromUrl(String fileUrl){
String fileName = "";
if(!ClassUtil.isNull(fileUrl)){
Integer index = fileUrl.lastIndexOf("/");
if(index>-1){
fileName = fileUrl.substring(index+1);
}
}
return fileName;
}
//20170221 若获取的变量为null 则返回空字符串
public static String dealStrWithNull(String str){
return (str == null? "":str);
}
//2017020 将oss url地址中的文件名进行编码后 如http://www.123.com/attachment/201702/20/20170220104327/test1+.jpg
//对url中的文件名进行utf-8编码
以防文件名中存在加号等特殊符号
导致附件无法下载
public static String encodeFileNameForUrl(String fileUrl) throws UnsupportedEncodingException{
String fileName = "";
if(!ClassUtil.isNull(fileUrl)){
Integer index = fileUrl.lastIndexOf("/");
if(index>-1){
String urlPrefix = fileUrl.substring(0,index+1);
fileName = fileUrl.substring(index+1);
fileName = URLEncoder.encode(fileName,"UTF-8");
fileUrl = urlPrefix + fileName;
}
}
return fileUrl;
}
//对oss url中的文件名进行utf-8解码
以防文件名中存在加号等特殊符号
导致附件无法下载
public static String decodeFileNameForUrl(String fileUrl) throws UnsupportedEncodingException{
String fileName = "";
if(!ClassUtil.isNull(fileUrl)){
Integer index = fileUrl.lastIndexOf("/");
if(index>-1){
String urlPrefix = fileUrl.substring(0,index+1);
fileName = fileUrl.substring(index+1);
fileName = URLDecoder.decode(fileName,"UTF-8");
fileUrl = urlPrefix + fileName;
}
}
return fileUrl;
}
/**
* 输出各个类型的字节数
* @param args
*/
private static void calSize() {
System.out.println("Integer: " + Integer.SIZE/8);
// 4
System.out.println("Short: " + Short.SIZE/8);
// 2
System.out.println("Long: " + Long.SIZE/8);
// 8
System.out.println("Byte: " + Byte.SIZE/8);
// 1
System.out.println("Character: " + Character.SIZE/8);
// 2
System.out.println("Float: " + Float.SIZE/8);
// 4
System.out.println("Double: " + Double.SIZE/8);
// 8
System.out.println("Boolean: " + Boolean.toString(false));
}
/**
* 将输入字符串以十进制输出
* */
public static void hexToDecimal1() {
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
String line;
try {
while((line = bufr.readLine()) != null) {
line = line.substring(2);//去掉0x前缀
int result = Integer.parseInt(line,16);
System.out.println(result);
}
}catch(IOException e) {
e.printStackTrace();
}
}
/**
* 将输入十六进制字符串以十进制输出
* */
public static void hexToDecimal() {
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
String line;
BigInteger base = new BigInteger("10");
try {
while((line = bufr.readLine()) != null) {
line = line.substring(2);//去掉0x前缀
//int result = Integer.parseInt(line,16);
BigInteger result = new BigInteger("0");
for(int i=0; i<line.length(); i++) {
char ch = line.charAt(line.length() - 1 - i);
if(ch >= 'A' && ch <= 'F') {
BigInteger tmp = base.pow(i).multiply(new BigInteger(Integer.toString(ch - 'A' + 10)));
result.add(tmp);
}else {
BigInteger tmp = base.pow(i).multiply(new BigInteger(Integer.toString(ch)));
result.add(tmp);
}
}
System.out.println(result);
}
}catch(IOException e) {
e.printStackTrace();
}
}
/**
* 获取利用反射获取类里面的值和名称
* @param obj
* @return
* @throws IllegalAccessException
*/
public static Map<String, Object> objectToMap(Object obj) throws IllegalAccessException {
Map<String, Object> map = new HashMap<>();
Class<?> clazz = obj.getClass();
System.out.println(clazz);
for (Field field : clazz.getDeclaredFields()) {
field.setAccessible(true);
String fieldName = field.getName();
Object value = field.get(obj);
map.put(fieldName, value);
}
return map;
}
/**
* 20181019 添加 调用dao方法
前后 添加日志
* @param owner 调用的对象或spring bean
* @param methodName 方法名
* @param args 参数map
* @return map
*/
public static Map<String, Object> invokeDaoMethod(Object owner, String methodName, HashMap<String, Object> args) throws Exception{
Class<? extends Object> ownerClass = owner.getClass();
logger.info("class[" + owner.getClass().getName() + "] - method[" + methodName + "]");
logger.info("ownerClass: ");
logger.info("owwnerClass is null? " + (ownerClass == null));
Method method = null;
try {
//method = ownerClass.getMethod(methodName,args.getClass());
method = ReflectionUtils.findMethod(ownerClass, methodName, args.getClass());
logger.info("method is null? " + (method == null));
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return objectToMap(ReflectionUtils.invokeMethod(method, owner, args));
}
public static void main(String[] args) {
// TODO Auto-generated method stub
hexToDecimal1();
}
}
最后
以上就是微笑冥王星为你收集整理的利用反射打印对象的所有属性及调用对象方法的全部内容,希望文章能够帮你解决利用反射打印对象的所有属性及调用对象方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复