乱读天书, 不求甚解
周祎骏的个人云笔记
Toggle navigation
乱读天书, 不求甚解
主页
Linux:系统配置
Linux:用户管理
Linux:优化排错
Linux:进程调度
Linux:文件系统
Linux:网络
Linux:系统服务
Linux:安全
Linux:内核
容器:Docker
容器:containerd
容器编排:Kubernetes
IAC:Terraform
大数据:Hadoop
大数据:Zookeeper
大数据:Hbase
消息队列:rsyslog
消息队列:kafka
数据库:MySQL
数据库:MongoDB
搜索引擎:Elasticsearch
时序数据库:OpenTSDB
网站服务:Nginx
编程:Bash
编程:Perl
编程:Python
编程:C
编程:JAVA
编程:Rust
版本控制:gitlab
知识管理:docusaurus
常用小工具
关于我
标签
JAVA 0.01 进一步了解类
2018-07-28 04:22:13
54
0
0
admin
> 包括所有类的父类Object类 以及用来形容类的Class类 #Object类 **所有类都是object的子类** *** ##Object 的方法 * **toString()方法** 把一个类转化为String对象 当运行"xxx"+obj的时候实际运行的是"xxx"+obj.toString() *** * **垃圾回收时触发finalize()方法** 当一个对象被垃圾回收时会触发这个方法。 **你不知道JAVA什么时候触发垃圾处理,一般也不需要定义这个方法。** 在牵扯到本地方法的时候,垃圾回收时可能牵扯到本地方法,这时候JAVA的垃圾回收就控制不了了。这时候用这个方法。 *** #Class类 Class类是用来描述类的类,以下是它的一些使用方式: 可用getClass() 方法从一个类中生成这个类的class对象 ``` import java.util.*; import java.lang.reflect.*;//如果要使用Method类的话,需要用这个包 public class test{ public static void main(String[] args){ Class c = null; try { c = Class.forName("java.lang.String");//用这种方式获得Class对象,会初始化对象 } catch(ClassNotFoundException e){ //有找不到这个对象的可能 System.exit(1); } c = String.class; //用这种方法获得对象,不会先初始化对象,但是如果使用的时候还是可能会触发初始化的 System.out.println("getName:"+c.getName());//获得包名+类名 System.out.println("getSimpleName:"+c.getSimpleName());//只获得类名 System.out.println("getCanonicalName:"+c.getCanonicalName());//获得包名,类名 //在目标是内部类或者数组的时候,getName()与getCanonicalName()的显示不一样 //获得该类的接口 System.out.println("getInterfaces:"); for ( Class s :c.getInterfaces()) {System.out.println(" "+s.getName());} //获得该类的方法 System.out.println("getMetMethods:"); for ( Method m :c.getMethods()) {System.out.println(" "+m);} //获得该类的数据结构 System.out.println("Constructors:"); for ( Constructor con :c.getConstructors()) {System.out.println(" "+con);} //获得父类 Class f = c.getSuperclass(); System.out.println("getSuperclass:"+f.getName()); try { Object o = c.newInstance(); //直接用class对象创建一个新的对象,要求此对象必须有默认构造器 System.out.println("o instanceof String:"+(o instanceof String)); // instanceof 是一个运算符,判断对象能否转成另一个对象(前者是否是后者的父类或者同一种类) System.out.println("c.isInstance(o):"+c.isInstance(o)); // 判断一个Class对象所描述的对象能否转成另一个对象(前者是否是后者的父类或者同一种类) Class<String> cc = String.class; System.out.println("cc.isAssignableFrom(c):"+cc.isAssignableFrom(c)); // 判断一个Class对象所描述的对象能否转成另一个Class对象所描述的对象(前者是否是后者的父类或者同一种类) // 这个方法需要对象有范式限制,否则会有警告 } catch(InstantiationException e){ //可能初始化失败 System.exit(1); } catch(IllegalAccessException e){ //可能没有权限初始化 System.exit(1); } } } ```
上一篇:
JAVA 0.002 内部类
下一篇:
JAVA 0.02 关于包
文档导航