Java中的反射——(1)什么是反射

Java中的反射——(1)什么是反射

大家好,又见面了,我是全栈君。

Java程序中的各个Java类属于同一类事物,描写叙述这类事物的Java类名就是Class.

public class ReflectTest {
	public static void main(String[] args) throws ClassNotFoundException {
		String str1 = "abc";
		Class cls1 = String.class;
		Class cls2 = str1.getClass();
		Class cls3 = Class.forName("java.lang.String");
		
		System.out.println(cls1 == cls2);
		System.out.println(cls2 == cls3);
	}
}

获取Class类的实例方法有三种:

1、类名.class

2、对象.getClass()

3、Class.forName(“String path);

上面样例中两个返回都是true,我们能够看到三种方式获取到的Class类的实例是同样的。每个类型就是一个Class类的实例对象。

以下我们再来看看Class类的isPrimitive()方法:

Java中的反射——(1)什么是反射

public class ReflectTest {
	public static void main(String[] args) throws ClassNotFoundException {
		String str1 = "abc";
		Class cls1 = String.class;
		Class cls2 = str1.getClass();
		Class cls3 = Class.forName("java.lang.String");
		
		System.out.println(cls1 == cls2);
		System.out.println(cls2 == cls3);
		
		System.out.println(cls1.isPrimitive());
		System.out.println(int.class.isPrimitive());
		System.out.println(int.class == Integer.class);
		System.out.println(int.class == Integer.TYPE);
	}
}

执行结果:

Java中的反射——(1)什么是反射

从上面结果能够看到,Integer类型的字节码和int类型的字节码不是同一个,在Java中有九种提前定义的 Class 对象。表示八个基本类型和 void。这些类对象由 Java 虚拟机创建,与其表示的基本类型同名。即 booleanbytecharshortintlongfloatdouble

 

Java中的反射——(1)什么是反射

除过Integer.TYPE外,还有:Boolean.TYPE, Character.TYPE, Byte.TYPE, Short.TYPE, Integer.TYPE, Long.TYPE, Float.TYPE, Double.TYPE, Void.TYPE

仅仅要在源程序中出现的类型,都有各自的Class实例对象,推断的方法例如以下:

Java中的反射——(1)什么是反射

反射就是把Java类中的各种成分映射成对应的Java类。

比如,一个Java类用一个Class类的对象来表示,一个类中的组成部分:成员变量,方法,构造方法,包等等信息也用一个个的Java类来表示,就像汽车是一个类。汽车中的发动机,变速箱也是一个个的类。表示Java类的Class类中提供了一系列的方法来获取当中的变量(Field),方法(Method),构造方法(Contructor),修饰符,包(Package)等信息。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/116623.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • JDK1.8下载、安装和环境配置教程

    JDK1.8下载、安装和环境配置教程一、下载安装包1.JDK1.8百度云下载路径:链接:https://pan.baidu.com/s/1ozCGy53AIeQIHWL6s9oAbw提取码:04lf网盘放的是jdk1.8版本中的1.8.0_152的版本2.如果大家想下载别的版本,可以去官网:www.oracle.com下载,进入官网页面,然后点击Downloads。…

  • java程序员必读的书_程序员必读的十四本经典书籍

    java程序员必读的书_程序员必读的十四本经典书籍必看书单

    2022年10月24日
  • thinkphp多用户在线客服系统源码-thinkPHP内核 附使用教程

    thinkphp多用户在线客服系统源码-thinkPHP内核 附使用教程步骤1请使用宝塔面板安装上传源码并且解压到网站很目录设置运行目录为public测试环境为php5.6mysql5.5伪静态选择为thinkphp宝塔安全放通:2080,9090这两个端口步骤2上方操作完毕后创建个数据库进行安装网站安装http://你的域名.com/install.php步骤3启动命令制定目录cd/www/wwwroot/你的网站目录/cgwl_pusher启动指令phpstart.phpstart-d如果没有运作起来根目录有个php5.6.

  • cv.copyMakeBorder(imwrite opencv)

    文章目录参考依据设置边界框参数实例参考依据OpenCV-Python官方教程:https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_core/py_basic_ops/py_basic_ops.html设置边界框如果你想给你的图片设置边界框,就像一个相框一样的东西,你就可以使用cv2.copyMake…

  • 如何保证docker2375端口的安全

    如何保证docker2375端口的安全情景再现:之前有很多朋友提过,当使用docker-maven-plugin打包SpringBoot应用的Docker镜像时,服务器需要开放2375端口。由于开放了端口没有做任何安全保护,会引起安全漏洞,被人入侵、挖矿、CPU飙升这些情况都有发生,今天我们来聊聊如何解决这个问题。问题产生的原因首先我们要明白问题产生的原因,才能更好地解决问题!Docker为了实现集群管理,提供了远程管理的端口。DockerDaemon作为守护进程运行在后台,可以执行发送到管理端口上的Docker命令。当我们修改do

  • java基础—java.io.FileNotFoundException: D:\\AAA(拒绝访问。)

    java.io.FileNotFoundException: D:\AAA(拒绝访问)

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号