Java-引出发射和什么是反射

问题1:

1.对象有编译类型和运行类型

Object    obj  =  new java.util.Date();

编译类型:  Object

运行类型:  java.util.Date

 需求:通过obj对象,调用java.util.Date类中的toLocaleString方法.

obj.toLocaleString();  此时编译报错, 编译时,会检查该编译类型中是否存在toLocaleString方法.

如果存在,编译成功,否则编译失败.

解决方案,因为obj的真实类型是java.util.Date类,所以我们可以把obj对象强制转换为java.util.Date类型.

java.util.Date d = (java.util.Date)obj;

d.toLocaleString();//调用成功

如果不知道obj的真实类型,就不能强转.(底层有一个方法,返回一个Object类型的java.util.Date对象).

   此时问题如何解决?

问题2:

我在面向对象中提及到,一切事物都可以看成是对象,那么问题来了,类这种事物是啥对象呢?

又使用什么类来表示类这种对象呢?

//底层代码:
//-----------------------------------
public   static  Object getObject(){
      return  new java.util.Date();
}

版权声明:
作者:yfeer
链接:https://www.yfeer.com/851.html
来源:个人编程学习网
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>