请教如何检验用户传入的类型是正确的
时间:2008-05-13 17:48:36
来源:论坛整理 作者: 编辑:chinaitzhe
- Java code
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ 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");
网友回复:!@(*$^!@(^$)!
怎么可能int?
你數據庫里面設置的是INTEGER
setColumnType(java.sql.Types.INTEGER);
你傳int根本進不去,會報錯啊
网友回复:
不是把,java.sql.Types.INTEGER这个就是int阿!表示4!
但像楼主那样判定,有点困难
还有第2各方法,传进String,之后你得把基本类型转化为相应的包装类型吧~
网友回复:呵呵...
您的意思是假如传String,我首先要判定是否是基本类型,比如可以构造一个map,key是"int","long",等等...然后再从里面get,得到包装类的字符串"Integer", 然后假如Class.forName()抛异常,就说明类型是错误的! 是吧?
网友回复:似乎没怎么看明白。
网友回复:把“columnType”声明为String的,用的时候进行类型转换吗?可以用JS 先判定下塞
网友回复: 除非columnType声明为String类型的。值是传不进去的。编译就同步过吧!
网友回复:我不知道大家是怎么了....
回去看看API吧
java.sql.Types.INTEGER这个是什么类型,是final int的!
网友回复:up``````````````
网友回复:我的需求很简单,就是用户在为ColumnBean set columnType的时候,要检查指定的类型是不是java里面有的数据类型就可以了。假如随便set一个不存在类型,要抛出一个异常来提示。
如:new ColumnBean().setColumnType("int");//视为正确的设置
new ColumnBean().setColumnType("Integer");//也视为正确的设置
new ColumnBean().setColumnType("intttt");//错误的设置,抛出异常
网友回复:
- Java code
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ 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")); } }
关键字:请教,检验,用户,传入,类型,正确,
上一篇:网页解析问题只能解析本地网页
下一篇:下面没有链接了











文章评论
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面