提前声明:我们在学习一样东西的时候,不懂就先死记硬背。不懂或者没有理解,是因为我们段位还不够。过一段时间反过来再看一遍可能就懂了。
foo类的类类型是指c1 c2 c3 ,和foo类有什么区别呢
1、创建类的实例:Foo foo=new Foo();
再想Java中,万物皆对象
那么Foo的实例对象是啥? 那就是老师所讲的 类类型 c1 c2..... Class c1 = foo.getClass();
2、用Foo直接创建实例对象和用c1 c2 c3 创建的实力对象有什么区别
说明Foo实例对象是:Foo foo=new Foo();
new 出来的对象是静态加载类,在编译时刻加载所有可能使用到的类。
c1 c2....是动态加载类的,这样我们编译不会报错,只有我们用到那个对象后,发现他不存在,才会报错,也就是老师所说的运行时加载类。
上诉是我对老师所讲的理解,希望对你有所帮助。
不合理的地方望指正,大家相互学习
连个问题都说不明白,还提问?
想要访问普通方法需要先创建对象,不可直接通过类名访问
个人感觉不是java中的类都是java.lang.Class的对象,而是每一个类都有一个隐藏的属性class,这个属性里封装了该类的所有信息,比如它的字段信息,方法信息等,我们可以通过类名.class或者对象名.getClass()或者Class的静态方法Class.forName()来获取到该隐藏的class属性,进而了解这个类的详细信息。
因为c3会抛出异常。一个变量的声明一般要写在Try的外面,即使发生的异常,catch 之后的代码也能正常引用c3。catch后面的代码有可能会是检查c3是否为空之类的。总之,声明变量一般要写在try, catch 外面.
谢谢各位 明白了
第一句话有毛病,所有类都是class的对象,这个对象我们称之为该对象的类类型,但是你理解的结果是对的
是的,你既然想用反射注入实体,那么就可以获取反射的构造方法,调用就行。这算是一种方法,然后解析XML就是属于另外的一个功能
如果没有重写equals(),Object的equals()源码就是用==判断的
你的Foo类没有放对位置,注意下{},要在外部
要用try catch包围
动物是蚂蚁吗
静态成员变量可以通过类名访问,也可以通过对象访问
因为它们都是foo 类的类类型,并且一个类只会是一个class类的实例对象;比如一个String类,它是class类的一个对象,而这个对象就是String类的类类型(也就是c1和c2都是String的类型所以它们是相等的),这是我个人的见解,不知是否能帮到你
看这个3分钟的地方https://www.imooc.com/qadetail/254655
String属于引用类型,不是基本类型
反射里会讲到点
据说框架里面用的多
个人理解,就是创建实例化对象就肯定用到构造器(无参或带参),而在使用反射中的 newInstance()方法创建对象时,并没有传参数,那么可以确定是使用了该类的无参构造
其中差别之一是c1 ,c2,c3都可以可以创建动态的加载类,
如果是通过new方法创建Foo类的实例对象是静态的。
可以用于Domain和DTO之间的转换工具。例如:
public static <T> T dto2do(Object dto, Class<T> domain) {}
(官方)移动端的APP可以缓存,PC端不能
(非官方)PC端在浏览器中能够用插件下,有些插件下载是很多短视频,有些插件是下载完整的,
(非官方)利用视频网址解析工具,解析出来能够下载
你拿类名去和一个对象比较?
鼠标停留在Class,按下Ctrl,会出现链接,点击
类的实例 和 类的对象是一样的 应该没有实例对象这个说法
你先搞清楚局部变量和全局变量,你foo1和foo2都是在try那个括号里面定义的,所以这个变量只在括号里面起作用,出了括号就没了
搞事情啊