例如public class Test1{
 private int id;
 private String name;
 private Date birthday; ...
 // getter和setter方法省略了
}public class Test2{
 public static void main(String[] args){
  Test1 t1=new Test1();
  
  // 在这里,如何得到 t1对象中 id的属性是int,name的属性是String,birthday的属性是Date ?
 }
}

解决方案 »

  1.   

    反射。
    有现成的工具可以用的,不用自己写代码了。
    我记得好像是bean-util之类的名字
      

  2.   

    public class A { public static void main(String[] args) {
    Object s = "123";
    if (s instanceof String) {
    System.out.println("s is String");
    } int i = 2;
    String str = "0";
    str += i;
    System.out.println(str);
    if (str.matches("[0-9]+")) {
    System.out.println("i is a int!");
    }
    }}希望以上代码能够帮到你
      

  3.   

    好像不行,bean-util是解决 数据库 不能存储中文 问题的!
      

  4.   

    反射啊...................通过反射可以得到类的所有属性和访问权限等.getClass().getName()就得到了类名了
      

  5.   

    2F
    你的方法我试过了,还是解决不了问题!
    主要是 我的Test1是实体类,和后台做ORM实体映射。。
      

  6.   


    Test te =new Test();
    Field fs[]= te.getClass().getDeclaredFields();
    for(Field ff:fs)
    {
    System.out.println(ff.getType());
    }
      

  7.   


    哪位大侠教你的,直接对他BeanUtils.populate(obj) --> Map<String, String>类型的名-值映射
    PropertyUtils.popluate(obj) --> Map<String, Object>,也就是原始字段类型
      

  8.   

    4F
    .getClass().getName() 返回的是String,仅仅是类名,我还是不能访问属性啊..
      

  9.   

    为什么不行?
    比如说
    Test1的private int id;这个变量,那么就可以        String str = "0";
            str += Test1.getId();
            if (str.matches("[0-9]+")) {
                System.out.println("Test1.id is a int!");
            }
      

  10.   

    lz 看下反射的API 一定可以解决
      

  11.   

    你是说Test1这个类还没有示例吗?然后要判断它的属性?
      

  12.   

    Method[] m = t1.getClass().getMethods();
    for (Method mm : m) {
    System.out.println(mm.getName()+" - " +mm.getReturnType());
    }
      

  13.   

    TestBean tb = new TestBean();
            Field[] tv = tb.getClass().getDeclaredFields();
            for (Field t : tv) {
                System.out.println("dataType = " + t.getType());
            }
      

  14.   


    package com.neusoft.util;import java.lang.reflect.Array;
    import java.lang.reflect.Field;
    import java.util.Calendar;public class LogMessage { public static String logObject(Object bean)
    throws IllegalArgumentException, IllegalAccessException {
    StringBuffer logMessage = new StringBuffer(); Class beanClass = bean.getClass();
    Field[] fields = beanClass.getDeclaredFields();
    logMessage.append("对象名: "+beanClass.getName());
    logMessage.append("[");
    if(fields != null){
    for (int i = 0; i < fields.length; i++) {
    fields[i].setAccessible(true);

    String name = fields[i].getName();
    Object value = fields[i].get(bean);
    Class type = fields[i].getType();
    String typeName = type.getName();

    if (Constant.JAVA_LANG_STRING.equals(typeName)
    || Constant.JAVA_MATH_BIGINTEGER.equals(typeName)) {
    appendComma(logMessage);
    logMessage.append(name + "=" + value+" ");
    } else if (Constant.JAVA_UTIL_CALENDAR.equals(typeName)) {
    appendComma(logMessage);
    if(value == null){
    logMessage.append(name + "=  ");
    }else{
    logMessage.append(name + "=" + ((Calendar) value).getTime()+" ");
    }
    } else if (typeName.indexOf(Constant.COM_NEUSOFT_PACKAGE) >= 0) {
    logMessage.append(name).append("=[");
    if (type != null && type.isArray()) {
    if(value != null){
    for (int j = 0; j < Array.getLength(value); j++) {
    appendComma(logMessage);
    logMessage.append(logObject(Array.get(value, j)));
    }
    }
    } else {
    appendComma(logMessage);
    logMessage.append(logObject(value));
    }
    appendComma(logMessage);
    logMessage.append("]");
    }
    }
    }
    logMessage.append("]"); return logMessage.toString();
    } private static void appendComma(StringBuffer buf) {
    if (!"[".equals(buf.toString())) {
    buf.append(",");
    }
    }

    }