博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java基础知识整理4:Class
阅读量:4980 次
发布时间:2019-06-12

本文共 2575 字,大约阅读时间需要 8 分钟。

JDK描述

public final class Class

extends Object
implements Serializable, GenericDeclaration, Type, AnnotatedElement

Class 类的实例表示正在运行的Java应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也表示为 Class 对象。

Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。

以下示例使用 Class 对象来显示对象的类名:

void printClassName(Object obj) {     System.out.println("The class of " + obj +                        " is " + obj.getClass().getName()); }

使用

原理

Java中所有的对象都继承Object对象,在Object中有一个方法:getClass(),这个方法返回对象的Class类,Class类是一个保存类的元数据的类,由JVM创建。如类Shape的变量、函数等描述信息都保存在Shape的Class实例之中。

Class的相关代码大多是native方法,暂时先放放

获得Class类

  • 使用Class.forName("shape");
  • 使用对象的getClass()方法
  • 使用类的常量,如String.class

使用Class实例生成对应类的实例

  • 使用Class的newInstance方法
Class obj=Class.forName("shapes");Object ShapesInstance=obj.newInstance();Class
obj=Class.forName("shapes");Shape shape=obj.newInstance();

方法

class的方法可以获得类加载器、类内部声明的构造函数、属性和方法,还可以查找资源,获取父类相关信息,判断是否是数组、接口、基本类型等。还可以根据Class实例化其描述的对象。

  • getClassLoader() 获取该类的类装载器。默认调用native方法
  • getComponentType() 如果当前类表示一个数组,则返回表示该数组组件的 Class 对象,否则返回 null。 这是一个native方法
  • getConstructor(Class[]) 返回当前 Class 对象表示的类的指定的公有构造子对象。
  • getConstructors() 返回当前 Class 对象表示的类的所有公有构造子对象数组。
  • getDeclaredConstructor(Class[]) 返回当前 Class 对象表示的类的指定已说明的一个构造子对象。
  • getDeclaredConstructors() 返回当前 Class 对象表示的类的所有已说明的构造子对象数组。
  • getDeclaredField(String) 返回当前 Class对象表示的类或接口的指定已说明的一个域对象。 * getDeclaredFields() 返回当前 Class 对象表示的类或接口的所有已说明的域对象数组。
  • getDeclaredMethod(String, Class[])返回当前Class对象表示的类或接口的指定已说明的一个方法对象。
  • getDeclaredMethods() 返回 Class 对象表示的类或接口的所有已说明的方法数组。
  • getField(String) 返回当前 Class 对象表示的类或接口的指定的公有成员域对象。
  • getFields() 返回当前 Class 对象表示的类或接口的所有可访问的公有域对象数组。
  • getInterfaces() 返回当前对象表示的类或接口实现的接口。
  • getMethod(String, Class[]) 返回当前 Class 对象表示的类或接口的指定的公有成员方法对象。
  • getMethods() 返回当前 Class 对象表示的类或接口的所有公有成员方法对象数组,包括已声明的和从父类继承的方法。
  • getModifiers() 返回该类或接口的 Java 语言修改器代码。
  • getName() 返回 Class 对象表示的类型(类、接口、数组或基类型)的完整路径名字符串。
  • getResource(String) 按指定名查找资源。
  • getResourceAsStream(String) 用给定名查找资源。
  • getSigners() 获取类标记。
  • getSuperclass() 如果此对象表示除 Object 外的任一类, 那么返回此对象的父类对象。
  • isArray() 如果 Class 对象表示一个数组则返回 true, 否则返回 false。
  • isAssignableFrom(Class) 判定 Class 对象表示的类或接口是否同参数指定的 Class 表示的类或接口相同,或是其父类。
  • isInstance(Object) 此方法是 Java 语言 instanceof 操作的动态等价方法。
  • isInterface() 判定指定的 Class 对象是否表示一个接口类型。
  • isPrimitive() 判定指定的 Class 对象是否表示一个 Java 的基类型。
  • newInstance() 创建类的新实例。
  • toString() 将对象转换为字符串。

总结

  • Java中Class类详解、用法及泛化 []
  • System.getSecurityManager() 默认没有安全管理器,如何设置,作用是什么?
  • 类加载机制ClassLoader

转载于:https://www.cnblogs.com/ssj234/p/6391642.html

你可能感兴趣的文章
mongo 数据库
查看>>
WebDeveloper的成长之路
查看>>
jsp页面跳转方式
查看>>
Miner.java 爬虫启动类
查看>>
【php】phpinfo 赏析
查看>>
tensorflow安装
查看>>
sql 语句用isnull函数的用法
查看>>
bash - array
查看>>
bash
查看>>
吃货联盟订餐系统
查看>>
WP2Sinablog使用后的后遗症
查看>>
name
查看>>
Linux基础-awk使用
查看>>
Android笔记(二十八) Android中图片之简单图片使用
查看>>
组合数
查看>>
对变量的理解
查看>>
第二阶段冲刺—第三天
查看>>
c/c++ 继承与多态 容器与继承1
查看>>
安卓程序代写 网上程序代写[原]Call requires API level 8 (current min is 1)错误
查看>>
C#正则表达式整理备忘
查看>>