有个bean,ColumnBean,它的属性由用户指定public class ColumnBean{
  private String columnName;
  private int columnType;  //......getter/setter  public void setColumnType(int type) throws IllegalArgumentException{
    //在这里我想校验传入的类型是否正确,请问如何做?
  }
}//正常情况下用户应这样调用
new ColumnBean().setColumnType(java.sql.Types.INTEGER);//正确的设置
//如果非正常的呢?
new ColumnBean().setColumnType(5000);//故意错误的设置还有一个思路是把“columnType”声明为String的,在set的时候我用Class.forName(type)检查,可如果是基本数据类型怎么办?如:
new ColumnBean().setColumnType("int");

解决方案 »

  1.   

    !@(*$^!@(^$)!
    怎么可能int?
    你數據庫里面設置的是INTEGER
    setColumnType(java.sql.Types.INTEGER);
    你傳int根本進不去,會報錯啊
      

  2.   

    不是把,java.sql.Types.INTEGER这个就是int阿!表示4!但像楼主那样判断,有点困难还有第2各方法,传进String,之后你得把基本类型转化为相应的包装类型吧~
      

  3.   

    呵呵...您的意思是如果传String,我首先要判断是否是基本类型,比如可以构造一个map,key是"int","long",等等...然后再从里面get,得到包装类的字符串"Integer", 然后如果Class.forName()抛异常,就说明类型是错误的! 是吧?
      

  4.   

    把“columnType”声明为String的,用的时候进行类型转换吗?可以用JS 先判断下塞
      

  5.   

      除非columnType声明为String类型的。值是传不进去的。编译就同步过吧!
      

  6.   

    我不知道大家是怎么了....
    回去看看API吧
    java.sql.Types.INTEGER这个是什么类型,是final int的!
      

  7.   

    我的需求很简单,就是用户在为ColumnBean set columnType的时候,要检查指定的类型是不是java里面有的数据类型就可以了。如果随便set一个不存在类型,要抛出一个异常来提示。如:new ColumnBean().setColumnType("int");//视为正确的设置
        new ColumnBean().setColumnType("Integer");//也视为正确的设置
        new ColumnBean().setColumnType("intttt");//错误的设置,抛出异常
      

  8.   

    package test;import java.lang.reflect.Field;
    import java.util.ArrayList;
    import java.util.List;public class ColumnBean1 {    private String columnName;    private String columnType;    // ......getter/setter    public boolean setColumnType(String type) throws IllegalArgumentException, ClassNotFoundException {        if (type.equalsIgnoreCase("int"))
                type = "Integer";
            type = type.toUpperCase();
            Class c = Class.forName("java.sql.Types");
            Field[] f = c.getDeclaredFields();
            List<String> list = new ArrayList<String>();
            for (Field f1 : f) {
                list.add(f1.getName());
            }
            if (list.contains(type))
                return true;
            else
                return false;
        }    public static void main(String[] args) throws IllegalArgumentException, ClassNotFoundException {
            System.out.println(new ColumnBean1().setColumnType("int"));
            System.out.println(new ColumnBean1().setColumnType("int22"));
            System.out.println(new ColumnBean1().setColumnType("char"));
        }
    }