使用一个特殊的Java类访问这些信息。保存这些信息的类名为Class,可能这会让我们会有点难受 xxx.class(字节码文件) 和我们获取的Class类有什么样的联系,后续再加以说明,先来看一个实例:
获取Class类对象的方式:
-
通过对象获取Class类对象
-
通过静态方法forName()
-
通过类的字节码
一、通过对象获取Class类对象
package com.reflection;
public class Student {
private String name; //学生姓名
private int age; //学生年龄
private String address; //学生所在地
public Student() {
}
public Student(String name, int age, String address) {
this.name = name;
this.age = age;
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
package com.reflection;
public class ClassTest {
public static void main(String[] args) {
//1.创建对象
Student s = new Student();
s.setName("张三");
//2.通过对象.getClass 获取所对应的Class类
Class<?> c = s.getClass();
System.out.println(c); //class com.reflection.Student 类的全限定名
System.out.println(c.getName() + "-->" + s.getName()); //获取Class类对应的类的全限定名
System.out.println(s.getClass().getName()); //与上述输出语句效果一致
}
}
二、通过forName()获取Class类对象
package com.reflection;
public class ClassTest2 {
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException {
//1.通过静态方法forName() 来获取类名对应的Class对象
Class<?> c = Class.forName("com.reflection.Student");
System.out.println(c.getName()); //获取类的全限定名
System.out.println(c.getConstructor()); //获取类的无参构造器
}
}
三、通过类的字节码,也是最快截的方式
package com.reflection;
import java.util.Random;
public class ClassTest3 {
public static void main(String[] args) {
Class<?> c = Student.class;
Class<?> c2 = int.class;
Class<?> c3 = Random.class;
/*
在这里我们就可以感受到反射的强大之处了
*/
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
**深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
**因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/cf21cf8f811095bfb0688e64a7406ecd.jpeg)
![img](https://img-blog.csdnimg.cn/img_convert/4d109a0c3a76d85b33664f6b1b311948.png)
![img](https://img-blog.csdnimg.cn/img_convert/202995b78a9c1d7017004f4a05a4d73c.png)
![img](https://img-blog.csdnimg.cn/img_convert/e67e68242206f86bb905d6e7866cd756.png)
![img](https://img-blog.csdnimg.cn/img_convert/3b3ec92510b3e6b15988b94a31e2fcfe.png)
![img](https://img-blog.csdnimg.cn/img_convert/e214955820e48c39d9220b554cdc7dc0.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!**
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)**
![img](https://img-blog.csdnimg.cn/img_convert/cfe193c2dc6028e5aa34560f971827ed.jpeg)
### 最后
手绘了下图所示的kafka知识大纲流程图(xmind文件不能上传,导出图片展现),但都可提供源文件给每位爱学习的朋友
![image.png](https://img-blog.csdnimg.cn/img_convert/4db028adaccd23bff77e569245d91bbf.webp?x-oss-process=image/format,png)
码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)**
[外链图片转存中...(img-FK41axm9-1711917907179)]
### 最后
手绘了下图所示的kafka知识大纲流程图(xmind文件不能上传,导出图片展现),但都可提供源文件给每位爱学习的朋友
[外链图片转存中...(img-PBUra2J2-1711917907180)]