public Person(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Student extends Person{
public Student(String name) {
super(name);
}
}
测试代码如下
Person stu = new Student("zhangsan");
Student stu2 = new Student("lisi");
if(stu instanceof Person){
Student s1 = (Student) stu;//向下转型
System.out.println(s1.getName());
}
if(stu2 instanceof Student){
Student s2 = stu2;//stu2本来就是Student的一个实例,无需向下转型
System.out.println(s2.getName());
}
总结:
instanceof操作符的作用是判断一个变量是否是右操作符指出的类的一个对象,由于java语言的多态性使得可以用一个子类的实例赋值给一个父类的变量,而在一些情况下需要判断变量到底是一个什么类型的对象,这时就可以使用instanceof了。当左操作数是右操作数指出的类的实例或者是子类的实例时都返回真,如果是将一个子类的实例赋值给一个父类的变量,用instanceof判断该变量是否是子类的一个实例时也将返回真。在接口中的应用也是如此。作者: moonlight 时间: 2011-11-22 10:15
简单的说是:
判断对象属于哪种类型的
if(obj instanceof class)
{
}
其返回true情况如下
1.obj是class类的对象
2.obj是class类子类的对象作者: 唐柏平 时间: 2011-11-22 11:02
判断某一对象是否是某个类的实例
(1)、instance of 运算符
对象名 instance of 类名(接口名) 返回布尔值
(2)、将强制类型转换和instance of 混合使用作者: 王丰盛568 时间: 2011-11-22 17:08
instanceof 运算符
返回一个 Boolean 值,指出对象是否是特定类的一个实例。
result = object instanceof class
参数
result
必选项。任意变量。
object
必选项。任意对象表达式。
class
必选项。任意已定义的对象类。
说明
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。
示例
下面的例子举例说明了 instanceof 运算符的用法。
function objTest(obj){
var i, t, s = ""; // 创建变量。
t = new Array(); // 创建一个数组。
t["Date"] = Date; // 填充数组。
t["Object"] = Object;
t["Array"] = Array;
for (i in t)
{
if (obj instanceof t[i]) // 检查 obj 的类。
{
s += "obj is an instance of " + i + "\n";
}
else
{
s += "obj is not an instance of " + i + "\n";
}
}
return(s); // 返回字符串。
}
var obj = new Date();
response.write(objTest(obj));