当前位置: 技术问答>java相关
SCJP -- about instanceof operator
来源: 互联网 发布时间:2015-03-08
本文导语: The contractor has started a Ticker class to post the company stock price. import java.awt.*; class Ticker extends Component { public static void main (String [] args) { Ticker t = new Ticker(); // Insert statement here } } Which of the fo...
The contractor has started a Ticker class to post the company stock price.
import java.awt.*;
class Ticker extends Component {
public static void main (String [] args) {
Ticker t = new Ticker();
// Insert statement here
}
}
Which of the following statements could legally be inserted into this code? (Choose all that apply.)
A. boolean test = (t instanceof Ticker);
B. boolean test = t.instanceof(Ticker);
C. boolean test = (t instanceof Component);
D. boolean test = t.instanceof(Object);
E. boolean test = (t instanceof String);
正确答案应该是A、C。为什么E不对?请展开讨论!
|
instanceof的使用规则,其实与cast是一样的。明白这点,就不会出错了
|
E这种写发在编译的时候就会报错,instanceof的使用是为了在做类型转换的时候
不至于发生runtime error,在编译的时候就已经做了检查。
不至于发生runtime error,在编译的时候就已经做了检查。
|
Ticker extends Component C 对
Ticker 是 Ticker A 对
我觉得 BD 用法不对
E 肯定不对 Ticker 与 String 没关系
Ticker 是 Ticker A 对
我觉得 BD 用法不对
E 肯定不对 Ticker 与 String 没关系
|
一个初学者的见解不知是否正确:是不是因为String是final类的原因,它不可能有子类的。
|
楼上的有一定的可能性
|
jsyx说的
Object t2=t;
boolean test = (t2 instanceof String);
binghuodao说的
java.sql.Connection conn = null;
System.out.println(conn instanceof Component);
这两个例子是一样的,Connection的父类也是object,所以编译时当然能通过了,毕竟Object是
所有类的父类么,因此我认为intenceof 后面的参数没有任何限制!并且intenceof的两边绝对不能是毫不相关的两个类,否则便已就会出错
Object t2=t;
boolean test = (t2 instanceof String);
binghuodao说的
java.sql.Connection conn = null;
System.out.println(conn instanceof Component);
这两个例子是一样的,Connection的父类也是object,所以编译时当然能通过了,毕竟Object是
所有类的父类么,因此我认为intenceof 后面的参数没有任何限制!并且intenceof的两边绝对不能是毫不相关的两个类,否则便已就会出错
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。