Java基础之—反射(一)

举报
brucexiaogui 发表于 2021/12/30 01:57:34 2021/12/30
【摘要】  Java基础之—反射(一) 概述: 1、介绍什么是反射 2、获得Class类对象的三种方式 一、什么是反射 描述得到数据结构的结构的数据的一种行为。 二、通过反射可以得到什么?   三、获得Class类对象的三种方式 public class ClassDemo { public stat...

 Java基础之—反射(一)

概述:

1、介绍什么是反射

2、获得Class类对象的三种方式

一、什么是反射

描述得到数据结构的结构的数据的一种行为。

二、通过反射可以得到什么?

 

三、获得Class类对象的三种方式


  
  1. public class ClassDemo {
  2. public static void main(String[] args) throws Exception {
  3. //第一种方式 使用 class的属性得到Class对象
  4. Class<String> c = String.class;//String.class就表示JVM里的一份表示String类的字节码
  5. Class<String> c2 = String.class;
  6. System.out.println(c == c2);//true,表示同一份字节码文件,肯定相同
  7. //第二种方式:
  8. //Class 没有公共构造方法
  9. //new Class(String.class);
  10. //static Class<?> forName(String className)
  11. //Class<String> clazz = (Class<String>) Class.forName("String");//ERROR
  12. Class<String> clazz = (Class<String>) Class.forName("java.lang.String");
  13. System.out.println(clazz);
  14. System.out.println(clazz == c);//true
  15. //第三种方式
  16. //Object类: Class<?> getClass() 返回此 Object 的运行时类。
  17. List<String> list = new ArrayList<String>();
  18. Class<?> listClz = list.getClass();//得到的是listClz的真正类型类
  19. System.out.println(listClz);//java.util.ArrayList
  20. boolean b = listClz.isInstance(list);//等价于 list instanceof ArrayList
  21. System.out.println("-->"+b);
  22. }
  23. public void show(){
  24. Class<?> clz = this.getClass();
  25. Class<ClassDemo> clz1= (Class<ClassDemo>) clz;
  26. System.out.println(clz1);//ClassDemo
  27. }
  28. }

 

文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。

原文链接:brucelong.blog.csdn.net/article/details/95513790

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。