深圳情缘 发表于 2006-5-4 01:50

问个弱弱的问题:JAVa中的instanceof

用instanceof可以判断一个对象是属于哪个类的实例,但是如果是int 型 double型的呢?
比如我只知道有个变量x, 但是不清楚它究竟是int 型的?double型的? 还是String型的引用?某种类型的对象的引用?
那么,这时要怎样才能判断出X(或者它所指向的对象)的类型呢?
是不是有其他什么方法?还是要用instanceof再结合什么方法来进行判别呢?

wool王 发表于 2006-5-7 20:09

java里有8种基本类型(j2se5.0增加到9种),,,这8种包括int,float,char等(特征是小写字母开头,,,呵呵,可以这么简单理解)...除了这8种基本类型外,,,其他的类型都是类(常见的String,Date等)...

instanceof只能用于类的判断,而不能判断是否属于基本类型...

同时,,,作为面向对象的java语言,提供了基本类型的封装类型,比如int对应于Integer,boolean对应Boolean...这种封装类型就可以用instanceof来判断.

对于楼主的需求,可以用封装类型来做判断.因为一个不知类型的x,,,我想必定不是基本类型吧???程序中声明x估计是用类似:Object x;这样子...这样的话其实就已经注定了x不可能是int,float等基本类型了...

表达得比较零散...楼主有什么疑问请继续提出...我了解的话我很乐意在这里贴出我的看法...

深圳情缘 发表于 2006-5-7 23:36

think you 啦

wool好像很久没来后院活动了哦?

如果连x是基本类型还是引用类型的都不知道呢?
呵呵好像这个问题有点弱,应该是没办法判断的吧?
其实我是想做一个标签,在jsp里面传参数进去,我希望这个标签能根据我传进的数据类型,判断究竟是什么类型的,比如说是INT 还是String   然后能根据所传的若干个参数,自动的按顺序执行PreparedStatement 对象的setInt()或者setString()等方法,…………最后是用表格显示出要查询的结果.
而我又希望这个标签的使用非常简单,不需要封装int   float等基本类型

**********************************************************************************************
因为一个不知类型的x,,,我想必定不是基本类型吧???程序中声明x估计是用类似:Object x;这样子...这样的话其实就已经注定了x不可能是int,float等基本类型了...
***********************************************************************************************

wool王 发表于 2006-5-8 01:37

如果连x是基本类型还是引用类型的都不知道呢?

这个在java里面应该没这种可能吧???就算你用标签,,,setX(××× x),至少也知道x是×××类型吧...

楼上的做法可以将标签设入值全部用String,然后再在程序中用例如:
String x = this.x;
int a ;
try{
   a = Integer.parasInt(x);
}catch(Exception e){
   a = 0;
}

大概此类的方法获得设入值是否符合业务逻辑范围.
页: [1]
查看完整版本: 问个弱弱的问题:JAVa中的instanceof