Class对象
(一) 获得Class对象的四种方式
第1种方法:Object.getClass()
第2种方法:.class语法
第3种方法:Class.forName()
第4种方法:包装类的TYPE域
import java.util.Date;
public class Demo1 {
public static void main(String[] args) throws ClassNotFoundException {
// 第1种方法:Object.getClass()
Class c1 = new Date().getClass();// 使用getClass()方式获得Class对象
System.out.println(c1.getName());// 输出对象名称
// 第2种方法:.class语法
Class c2 = boolean.class;// 使用.class语法获得Class对象
System.out.println(c2.getName());// 输出对象名称
// 第3种方法:Class.forName()
Class c3 = Class.forName("java.lang.String");// 使用Class.forName()获得Class对象
System.out.println(c3.getName());// 输出对象名称
// 第4种方法:包装类的TYPE域
Class c4 = Double.TYPE;// 使用包装类获得Class对象
System.out.println(c4.getName());// 输出对象名称
}
}
(二) 获取类对象的
- 类的标准名称
- 类的修饰符
- 类的泛型参数
- 类所实现的接口
- 类的直接继承类
- 类的注解
- 类的构造方法
- 类的非继承域变量
- 类的非继承方法
import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.lang.reflect.Type;
import java.lang.reflect.TypeVariable; public class Demo2 { public static void main(String[] args) throws ClassNotFoundException { // 获得ArrayList类对象
Class<?> clazz = Class.forName("java.util.ArrayList"); // 类的标准名称
System.out.println("类的标准名称:" + clazz.getCanonicalName()); // 类的修饰符
System.out.println("类的修饰符:" + Modifier.toString(clazz.getModifiers())); // 输出类的泛型参数
System.out.print("类的泛型参数:");
TypeVariable<?>[] typeVariables = clazz.getTypeParameters();
if (typeVariables.length != 0) {
for (TypeVariable<?> typeVariable : typeVariables) {
System.out.println(typeVariable + "\t");
}
} else {
System.out.println("空");
} // 输出类所实现的所有接口
System.out.println("类所实现的接口:");
Type[] interfaces = clazz.getGenericInterfaces();
if (interfaces.length != 0) {
for (Type type : interfaces) {
System.out.println("\t" + type);
}
} else {
System.out.println("\t" + "空");
} // 输出类的直接继承类,如果是继承自Object则返回空
System.out.print("类的直接继承类:");
Type superClass = clazz.getGenericSuperclass();
if (superClass != null) {
System.out.println(superClass);
} else {
System.out.println("空");
} // 输出类的所有注释信息,有些注释信息是不能用反射获得的
System.out.print("类的注解:");
Annotation[] annotations = clazz.getAnnotations();
if (annotations.length != 0) {
for (Annotation annotation : annotations) {
System.out.println("\t" + annotation);
}
} else {
System.out.println("空");
} // 获得该类对象的所有构造方法
System.out.println("类的构造方法:");
Constructor<?>[] constructors = clazz.getConstructors();
if (constructors.length != 0) {
for (Constructor<?> constructor : constructors) {
System.out.println("\t" + constructor);// 输出构造方法
}
} else {
System.out.println("\t空");
} // 获得该类对象的所有非继承域
System.out.println("类的非继承域变量:");
Field[] fields = clazz.getDeclaredFields(); if (fields.length != 0) {
for (Field field : fields) {
System.out.println("\t" + field);// 输出非继承域
}
} else {
System.out.println("\t空");
} // 获得该类对象的所有非继承方法
System.out.println("类的非继承方法:");
Method[] methods = clazz.getDeclaredMethods();
if (methods.length != 0) {
for (Method method : methods) {
System.out.println(method);// 输出非继承方法
}
} else {
System.out.println("\t空");
}
} }
代码来源:明日科技[Java经典编程300例源代码]。
Class对象的更多相关文章
- 如何一步一步用DDD设计一个电商网站(九)—— 小心陷入值对象持久化的坑
阅读目录 前言 场景1的思考 场景2的思考 避坑方式 实践 结语 一.前言 在上一篇中(如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成),有一行注释的代码: public interfa ...
- javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈
Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...
- 探究javascript对象和数组的异同,及函数变量缓存技巧
javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...
- Asp.Net WebApi核心对象解析(下篇)
在接着写Asp.Net WebApi核心对象解析(下篇)之前,还是一如既往的扯扯淡,元旦刚过,整个人还是处于晕的状态,一大早就来处理系统BUG,简直是坑爹(好在没让我元旦赶过来该BUG),队友挖的坑, ...
- JS核心系列:浅谈原型对象和原型链
在Javascript中,万物皆对象,但对象也有区别,大致可以分为两类,即:普通对象(Object)和函数对象(Function). 一般而言,通过new Function产生的对象是函数对象,其他对 ...
- Chrome出了个小bug:论如何在Chrome下劫持原生只读对象
Chrome出了个小bug:论如何在Chrome下劫持原生只读对象 概述 众所周知,虽然JavaScript是个很灵活的语言,浏览器里很多原生的方法都可以随意覆盖或者重写,比如alert.但是为了保证 ...
- XStream将java对象转换为xml时,对象字段中的下划线“_”,转换后变成了两个的解决办法
在前几天的一个项目中,由于数据库字段的命名原因 其中有两项:一项叫做"市场价格"一项叫做"商店价格" 为了便于区分,遂分别将其命名为market ...
- ASP.NET内置对象的总结
1. Response对象可形象的称之为响应对象,用于将数据从服务器发送回浏览器. 实例源码:链接: http://pan.baidu.com/s/1dDCKQ8x 密码: ihq0 2. Requ ...
- ADO.NET对象的详解
1. Connection 类 和数据库交互,必须连接它.连接帮助指明数据库服务器.数据库名字.用户名.密码,和连接数据库所需要的其它参数.Connection对象会被Command对象使用,这样就能 ...
- 对Castle Windsor的Resolve方法的解析时new对象的探讨
依赖注入框架Castle Windsor从容器里解析一个实例时(也就是调用Resolve方法),是通过调用待解析对象的构造函数new一个对象并返回,那么问题是:它是调用哪个构造函数呢? 无参的构造函数 ...
随机推荐
- QT 4.7支持中文(QT4.7)(中文)(makeqpf)
QT 4.7支持中文(QT4.7)(中文)(makeqpf) 摘要: QT4.7.0在移植到开发板上的时候,中文支持是必不可少的,如何让QT支持中文,如何制作QT支持的字体文件,如何使QT UI编辑器 ...
- linux cache swap 以及 虚拟内存等
提出四个问题及解答: 1)若进程在运行过程中,物理内存不足会发生什么? 2)为何进程在占用物理内存不变的情况下,系统的物理内存会增加? 3)为何程序的大小大于实际占用的物理内存?(假如程序30M,却只 ...
- JMeter一个错误the target server failed to respond--JMeter坑
问题:1.在测试一个http景象,特别是集波动TPS时刻,出现了一个错误.它现在是一个必须错误(压力顺利时却零星的错误,甚至很少见): 每次必现错误(開始一直怀疑是网络或程序的问题) 2.失败事务 ...
- UITabBar背景、icon图标颜色、被选中背景设置以及隐藏UITabBar的两种方式
一.对UITabBar背景和icon图标的一些设置 (1)因为直接给UITabBar设置的背景颜色显示的不纯,半透明的感觉,所以,有时候我们可以直接利用纯色的图片作为背景达到想要的效果: (2)给ic ...
- SlipButton——滑动开关
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjI1MjUwMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...
- Oracle中drop user和drop user cascade的区别
drop user : 仅仅是删除用户,drop user username cascade :会删除此用户名下的所有表和视图. userSpecify the user to be dropped. ...
- [J2EE学习][post,get乱码处理]
post乱码 通过flitter过滤(原理待未来好好学习) <!-- post乱码过虑器 --> <filter> <filter-name>CharacterEn ...
- NuGet学习笔记(2)——使用图形化界面打包自己的类库(转)
上文NuGet学习笔记(1) 初识NuGet及快速安装使用说到NuGet相对于我们最重要的功能是能够搭建自己的NuGet服务器,实现公司内部类库的轻松共享更新.在安装好NuGet扩展后,我们已经能够通 ...
- CLR via C# - Char_String - Format
//前面那个本来想重新编辑的,但是那个编辑器之前被我调到Markdown之后,改回Tiny MCE编辑器不出来 1.ToString()方法 & IFormattable & IFor ...
- Cisco cmd 命令(二)
1.配置路由器静态路由选择表 ip route [destination_network] [mask] [next_hop_address or exitinterface] [administra ...