java:Class之cast方法使用
java:Class之cast方法使用1 使用package com.xiaoxu.service;/*** @author xiaoxu* @date 2022-02-14* Ymybatis:com.xiaoxu.service.UseCast*/public class UseCast {public static void main(String[] args) {Peach p=new
·
java:Class之cast方法使用
1 使用
package com.xiaoxu.service;
/**
* @author xiaoxu
* @date 2022-02-14
* Ymybatis:com.xiaoxu.service.UseCast
*/
public class UseCast {
public static void main(String[] args) {
Peach p=new Peach();
//向上转型 (子类对象赋值给父类引用):Fruit.class.cast(p)
Fruit f = Fruit.class.cast(p);
f.print();
//向上转型二
Fruit f1 = p;
f1.print();
//子类对象桃子赋值给子类引用西瓜,会抛错
Watermelon w = Watermelon.class.cast(f);
w.print();
}
}
interface Fruit{
void print();
}
class Peach implements Fruit{
@Override
public void print() {
System.out.println("我是桃子");
}
}
class Watermelon implements Fruit{
@Override
public void print() {
System.out.println("我是西瓜");
}
}
2 结果
观察Class的cast源码:
public T cast(Object obj) {
if (obj != null && !isInstance(obj))
throw new ClassCastException(cannotCastMsg(obj));
return (T) obj;
}
可知,Class< T >类的cast方法,本质上就是强制转换,即将父类对象强制转换为子类对象(即传参为Object对象,返回的是强制转换后的T对象(T一定是Object的子类))。使用时,如果父类.class.cast传参为子类对象,那么拿到的实际就是子类对象。
更多推荐
所有评论(0)