首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java中的反射——(1)什么是反射

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

作者头像
全栈程序员站长
发布2022-07-06 21:06:27
发布2022-07-06 21:06:27
58100
代码可运行
举报
运行总次数:0
代码可运行

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

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

代码语言:javascript
代码运行次数:0
运行
复制
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()方法:

代码语言:javascript
代码运行次数:0
运行
复制
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);
	}
}

执行结果:

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

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

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

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年1月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档