package huang.de.wei;

import java.lang.annotation.Annotation;

import java.lang.reflect.Constructor;

import java.lang.reflect.Method;

@SuppressWarnings(value="unchecked")

@Deprecated

public class ClassTest {

//为这个类定义私有构造器

private ClassTest(){

}

//定义一个有参数的构造器

public ClassTest(String name){

System.out.println("这是私有的构造器");

}

//定义一个无参数的info方法

public void info(){

System.out.println("这是一个无参数的info方法");

}

public void info(String str){

System.out.println("这是有参数的info方法,参数为:"+str);

}

//定义一个内部测试类

class Inner{

}

public static void main(String[] args) throws SecurityException, NoSuchMethodException, ClassNotFoundException{

//下面的代码可以获取ClassTest对饮的Class

Class clazz=ClassTest.class;

//获取该Class对象对应的全部构造器

Constructor[] ctors=clazz.getDeclaredConstructors();

System.out.println("类的构造器全部如下");

for(Constructor c : ctors){

System.out.println(c);

}

//获取class对象所对应的全部public构造器

System.out.println("class对象所对应的全部public构造器:");

Constructor[] publicCtors=clazz.getConstructors();

for(Constructor c :publicCtors){

System.out.println(c);

}

//获取calss对象所对应全部的public方法

Method[] mtds=clazz.getMethods();

System.out.println("ClassTest的全部public方法如下:");

for(Method c : mtds){

System.out.println(c);

}

//获取Class对象所对应类的指定方法

System.out.println("ClassTest里面带一个字符串的info方法为:"+clazz.getMethod("info", String.class));

System.out.println("ClassTest里面没带一个字符串的info方法为:"+clazz.getMethod("info"));

//获取class对象所对应的类上的全部注释

Annotation[] anns=clazz.getAnnotations();

System.out.println("ClassTest的全部注释如下");

for(Annotation c : anns){

System.out.println(c);

}

System.out.println("注意:Annotation信息找不到@SupperssWarnings信息");

System.out.println("该Class元素上的@SupperssWarnings注释为:"

+clazz.getAnnotation(SuppressWarnings.class)) ;

//获取该class对象的全部内部类

Class>[] inners=clazz.getDeclaredClasses();

System.out.println("ClassTest的全部内部类如下:");

for(Class c : inners){

System.out.println(c);

}

//使用Class.forname的方法来加载ClassTest的Inner内部类

Class inClazz =Class.forName("huang.de.wei.ClassTest$Inner");

//通过getDeclaringClass()访问该类所在的外部类

System.out.println("InClazz对应类的外部类为:"+

inClazz.getDeclaringClass());

System.out.println("ClassTest的包为:"+clazz.getPackage());

System.out.println("ClassTest的父类为:"+clazz.getSuperclass());

// TODO: handle exception

}

}

运行结果(抛出的异常可能有差异):

类的构造器全部如下

private huang.de.wei.ClassTest()

public huang.de.wei.ClassTest(java.lang.String)

class对象所对应的全部public构造器:

public huang.de.wei.ClassTest(java.lang.String)

ClassTest的全部public方法如下:

public static void huang.de.wei.ClassTest.main(java.lang.String[]) throws java.lang.SecurityException,java.lang.NoSuchMethodException,java.lang.ClassNotFoundException

public void huang.de.wei.ClassTest.info()

public void huang.de.wei.ClassTest.info(java.lang.String)

public final void java.lang.Object.wait() throws java.lang.InterruptedException

public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException

public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException

public native int java.lang.Object.hashCode()

public final native java.lang.Class java.lang.Object.getClass()

public boolean java.lang.Object.equals(java.lang.Object)

public java.lang.String java.lang.Object.toString()

public final native void java.lang.Object.notify()

public final native void java.lang.Object.notifyAll()

ClassTest里面带一个字符串的info方法为:public void huang.de.wei.ClassTest.info(java.lang.String)

ClassTest里面没带一个字符串的info方法为:public void huang.de.wei.ClassTest.info()

ClassTest的全部注释如下

@java.lang.Deprecated()

注意:Annotation信息找不到@SupperssWarnings信息

该Class元素上的@SupperssWarnings注释为:null

ClassTest的全部内部类如下:

class huang.de.wei.ClassTest$Inner

InClazz对应类的外部类为:class huang.de.wei.ClassTest

ClassTest的包为:package huang.de.wei

ClassTest的父类为:class java.lang.Object

值得注意的是:虽然我们定义了ClassTest类时,使用了@supperssWarnings,但程序运行时无法分析出该类里面包含的该注释,这是因为@supperssWarnings使用了@Retention(value=SOURCE)修饰,这表明@supperssWarnings只能保存在源码级别上,而通过ClassTest.class获取该类的运行时class对象,所以程序无法访问到@supperssWarnings注释,所以说:对于只能在源码上保存的注释,无法通过运行时获得的class对象访问。

java 反射 获取 实例_java通过类反射获取某个类的所有信息--代码实例相关推荐

  1. java内省的意思_java内省和反射的区别

    展开全部 经过多方面的资料搜集整理,写下了这篇文章,本文主要讲解java的反射和内e68a843231313335323631343130323136353331333363366237省机制,希望对 ...

  2. java 反射 参数 注解_Java编程之反射中的注解详解

    "注解"这个词,可谓是在Java编程中出镜率比较高,而且也是一个老生常谈的话题.我们之前在聊Spring相关的东西时,注解是无处不在,之前我们简单的聊过一些"注解&quo ...

  3. java值的传递_Java 8可选–基于值的类使用指南

    java值的传递 In this article, we will go through the use of Java 8 Optional class and understand what a ...

  4. java kafka 设置分区_Java kafka如何实现自定义分区类和拦截器

    Java kafka如何实现自定义分区类和拦截器 2.producer配置文件指定,具体的分区类 // 具体的分区类 props.put(ProducerConfig.PARTITIONER_CLAS ...

  5. java 继承对象 初始化_java中具有继承关系的类及其对象初始化顺序

    先说结论 对于具有继承关系的类,它们的类和对象构造顺序为:父类的类构造器() -> 子类的类构造器() -> 父类成员变量的赋值和实例代码块 -> 父类的构造函数 -> 子类成 ...

  6. java语音验证码_Java实现发送手机短信语音验证功能代码实例

    这篇文章主要介绍了Java实现发送手机短信语音验证功能代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 利用第三方平台可以实现发送手机短信验证 ...

  7. java 实现语音报警代码_Java实现发送手机短信语音验证功能代码实例

    这篇文章主要介绍了Java实现发送手机短信语音验证功能代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 利用第三方平台可以实现发送手机短信验证 ...

  8. java中对象类型转换_Java中的对象的类型转换介绍(附代码)

    本篇文章给大家带来的内容是关于Java中的对象的类型转换介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 向上转型:子类对象转为父类,父类可以是接口.公式:Father ...

  9. php如何获取手机序列号,基于php的苹果序列号查询接口调用代码实例

    代码描述:基于php的苹果序列号查询接口调用代码实例 关联数据:苹果序列号 接口地址:http://www.juhe.cn/docs/api/id/37 // +------------------- ...

  10. python在律师上作中的实例_基于Python的律师信息查询接口调用代码实例

    基于Python的律师信息查询接口调用代码实例代码描述:基于Python的律师信息查询接口调用代码实例 代码平台:聚合数据 #!/usr/bin/python # -*- coding: utf-8 ...

最新文章

  1. 资源 | 做一款炫酷的机器人需要哪些学习资源(机器人资源Awesome系列)
  2. 【收藏备用】服务器基本故障及排查方法
  3. html制作一个简单的邮件,使用HTML编写简单的邮件模版
  4. C# 分割字符串方法
  5. java读取复杂csv文件内容_java读取并导出多类型数据csv文件
  6. 【集合】Java 集合的ConcurrentModificationException
  7. 自建站如何通过Facebook广告引流?
  8. ROS-PCL读取pcd点云数据并在rviz中进行显示
  9. MATLAB中if (0)
  10. 视频转换器Prism Plus for mac轻松转换视频!
  11. mysql批量sql语句 c_Mysql批量插入数据sql语句
  12. 计算机上网记录怎么清除,win7系统彻底清除上网记录的详细方法
  13. 不同品牌路由器无线桥接的设置方法
  14. linux里面如何配置软路由,Linux中增加软路由的两种方法
  15. GitHub上提交代码之写给小白
  16. Android旗舰机与苹果,真正的旗舰之王!iPhone和国产安卓旗舰机,谁才能够当之无愧?...
  17. c语言设计思路和有点不足,C语言总结报告
  18. 计算机用户登录界面,win登录界面突然多出来个Administrator的账户
  19. Aconvert 文档格式转换-PDF转免费转其他文档网址-免费
  20. android 横竖屏幕切换,Android 横竖屏切换总结

热门文章

  1. JAVA生成word中有Excel文档
  2. java判断全角_Javascript判断日文全角半角长度
  3. html简单情侣对话
  4. iar升级芯片库_【经验】如何使用IAR生成MCU RL78的库文件?
  5. gitlab从安装到使用到常见问题处理
  6. 【愚公系列】2022年08月 微信小程序-(rich-text)富文本和(text)文本的详解
  7. linux休眠唤醒后qt无法启动,Ubuntu 18.04 休眠后无法唤醒的解决办法
  8. 请按该计酬方式计算员工的工资。
  9. 广告公司给客户做的视频如何避免被外泄?
  10. synchronized批量重偏向与批量撤销