怎样判断对象是否可以转换?

可以使用instanceof运算符判断一个对象是否可以转换为指定的类型:
Object obj="Hello";
if(obj instanceof String)
 System.out.println("obj对象可以被转换为字符串");

下列语句哪一个将引起编译错误?为什么?哪一个会引起运行时错误?为什么?
  m=d;
  d=m;
  d=(Dog)m;
  d=c;(子类是否能给子类赋值)
  c=(Cat)m;

源代码:

class Mammal{}

class Dog extends Mammal {}

class Cat extends Mammal{}

public class TestCast

{

public static void main(String args[])

{

Mammal m;

Dog d=new Dog();

Cat c=new Cat();

m=d;//子类d可以给父类m赋值

//d=m;

d=(Dog)m;

//d=c;//false

//c=(Cat)m;

}

原因:子类对象可以直接赋给基类变量。

//d=m;改为d=m;时运行结果如下:

原因分析:子类对象可以直接赋给基类变量。基类对象要赋给子类对象变量,必须执行类型转换

//d=c; 改为d=c;时报错,运行结果如下:

原因分析:基类对象要赋给子类对象变量,必须执行类型转换,其语法是:子类对象变量=(子类名)基类对象名;

更改后的代码如下:

class Mammal{}

class Dog extends Mammal {}

class Cat extends Mammal{}

public class TestCast

{

public static void main(String args[])

{

Mammal m;

Dog d=new Dog();

Cat c=new Cat();

m=d;//子类d可以给父类m赋值

d=m;

d=(Dog)m;

//d=c;//false 子类不可以给子类赋值

c=(Cat)m;

}

}

更改之后编译并没有报错,因为没有输出语句,所以没有输出。

时间: 2024-09-29 09:10:21

怎样判断对象是否可以转换?的相关文章

第七章 课堂例子 怎样判断对象是否可以转换?

怎样判断对象是否可以转换? 可以使用instanceof运算符判断一个对象是否可以转换为指定的类型: Object obj="Hello"; if(obj instanceof String) System.out.println("obj对象可以被转换为字符串"); public class ka { public static void main(String[] args) { //声明hello时使用Object类,则hello的编译类型是Object,Ob

AS3类和类名的判断、获取、转换等

1.is——判断对象/类是否属于某一类,返回布尔值 例:123 is Number 返回:true 例:int is Object 返回:true 2.as——判断对象/类是否属于某一类,成功返回对象本身,失败返回null 例: 123 as uint 返回:123 例:123 as string 返回:null 注:在很多情况下,类型不符时编译器会自动进行as操作 利用as,我们可以在不强转换的前提下call出代码提示 3.Class(object)——强转换,可能丢失数据,适用范围较广,失败

url字符串和对象之间的转换

这里会涉及两个需求,有时候,我们想将获得的url字符串按键值对的形式保存成一个对象,用location.search获得url参数字符串,这里不考虑location.pathname和location.hash. url字符串对象化 1 var urlToObj = function (){ 2 var search = this.replace(/^\s+|\s+$/, '').match(/([^?#]*)(#.*)?$/); 3 if( !search ){ 4 return {}; 5

hashcode 和equals 及HashSet判断对象相等

hashcode()和equals()及HashSet判断对象相等.1. 首先equals()和hashcode()这两个方法都是从object类中继承过来的.public boolean equals(Object obj)    指示某个其他对象是否与此对象“相等”.     equals 方法在非空对象引用上实现相等关系:      * 自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true.      * 对称性:对于任何非空引用值 x 和 y,当且仅当 y.equa

Java基础 ----- 判断对象的类型

1. 判断对象的类型:instanceOf 和 isInstance 或者直接将对象强转给任意一个类型,如果转换成功,则可以确定,如果不成功,在异常提示中可以确定类型 public static void main(String[] args) { Integer i = new Integer(10); System.out.println(i instanceof Integer); // 知道类型名 String parentClass = "java.lang.String";

javascript 判断对象的内置类型

判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法.在toString方法被调用时,会执行下面的操作步骤:1. 获取this对象的[[Class]]属性的值.2. 计算出三个字符串"[object ", 第一步的操作结果Result(1), 以及 "]"连接后的新字符串.3. 返回第二步的操作结果Result(2).Object.prototype.toString方法返回的字符串,去掉前面固定的"[

判断对象类型

1.typeof不能区分数组类型和对象,只能区分原始类型与function 2.判断父级对象: isPrototypeOf -- 判断对象本身数据类型,及可能继承自原型的数据类型 let bool = Array.prototype.isPrototypeOf(obj) 3. 判断构造函数: 检查整个原型链 obj.constructor==Array 是数组,也可能继承自数组 let bool = obj instanceof Array 是数组,也可能继承自数组 4. 判断对象的内部clas

Python中 isinstance()用法 判断对象的类型

isinstance(p_object, class_or_type_or_tuple):判断对象的类型 a=123 ret=isinstance(a,int) print(ret) #输出:True li=[2,57,4] ret1=isinstance(li,list) print(ret1) #输出:True  

Java对象和XML转换

有时候,我们需要把Java对象转换成XML文件.这时可以用JAXB来实现.(JDK1.6及以后的版本无需导入依赖包,因为已经包含在JDK里了) 假如某个公司有许多部门,每个部门有许多职员,我们可以这样来设计简单的bean对象. [java] view plain copy @XmlRootElement(name="department") public class Department { private String name;    //部门名称 private List<