1.获取类信息
class Student {
static {
System.out.println("加载Student类");
}
public Student() {
System.out.println("Construct Student");
}
}
public class ClassTest {
public static void main(String[] args) throws ClassNotFoundException {
Integer integer = 5;
Class<Integer> c1 = int.class;
System.out.println("c1= " + c1);
Class<Integer> c2 = Integer.class;
System.out.println("c2= " + c2);
Class<Integer> c3 = Integer.TYPE;
System.out.println("c3 = " + c3);
Class<? extends Integer> c4 = integer.getClass();
System.out.println("c4 = " + c4);
Class<Student> c5 = Student.class;
System.out.println("c5= " + c5);
Class<?> c6 = Class.forName("Student");
System.out.println("c6= " + c6);
}
}
2.获取方法和字段信息
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
class MyClass {
public int pubField;
protected int proField;
private int priField;
public MyClass() {
}
public MyClass(int a) {
}
protected MyClass(int a, int b) {
}
private MyClass(int a, int b, int c) {
}
public void pub_method() {
}
protected void pro_method() {
}
void defMethod() {
}
private void priMethod() {
}
public static void staticMethod() {
}
}
interface MyInterface {
float pi = 3.14f;
void fun();
default void defFun() {
}
static void staticFun() {
}
}
public class ClassInfo {
public static void main(String[] args) {
Class clz = MyClass.class;
System.out.println("Fields:");
for (Field field : clz.getFields()) {
System.out.println(field);
}
System.out.println("---------------------------------");
System.out.println("Constructors:");
for (Constructor<?> constructor : clz.getDeclaredConstructors()) {
System.out.println(constructor);
}
System.out.println("---------------------------------");
System.out.println("Methods:");
for (Method method : clz.getMethods()) {
System.out.println(method);
}
System.out.println("---------------------------------");
clz = MyInterface.class;
System.out.println("Interface's Methods:");
for (Method method : clz.getMethods()) {
System.out.println(method);
}
}
}
3.获取基类和接口信息
interface A {
}
interface B {
}
class Base {
}
class Derived extends Base implements A, B {
}
public class SuperClassAndInterface {
public static void main(String[] args) {
Class<Derived> clz = Derived.class;
Class<? super Derived> baseClz = clz.getSuperclass();
System.out.println("基类:" + baseClz);
Class<?>[] interfaces = clz.getInterfaces();
for (Class<?> c : interfaces) {
System.out.println(c);
}
}
}
4.获取枚举信息
enum Week {
Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
}
public class EnumInfo {
public static void main(String[] args) {
Class<Week> clz = Week.class;
Week[] weeks = clz.getEnumConstants();
for (Week week : weeks) {
System.out.println(week);
}
}
}
5.获取泛型信息
import java.lang.reflect.Type;
import java.util.ArrayList;
interface Functor<T> {
void call(T args);
}
class MyCallBack implements Functor<Object> {
@Override
public void call(Object args) {
System.out.println(args);
}
}
class CallbackTest {
public static <T> T callback(ArrayList<T> list, Functor<? super T> fun) {
for (T each : list) {
fun.call(each);
}
return list.get(0);
}
}
public class GenericInfo {
public static void main(String[] args) {
System.out.println("[MyCallBack类的泛型信息]");
Class clz = MyCallBack.class;
Type baseType = clz.getGenericSuperclass();
System.out.println("基类:");
System.out.println(baseType);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现