前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java反射02-使用Class对象

java反射02-使用Class对象

作者头像
潇洒
发布2023-10-20 10:15:46
1320
发布2023-10-20 10:15:46
举报
文章被收录于专栏:石头岛

简述

使用反射万事第一步,获取 Class 类。 获取Class对象的方式:

  1. Class.forName()
  2. Class.class
  3. Class.getClass()

获取Class对象

如何取得操作类的Class对象,常用的有三种方式: 使用Class的静态方法来获取一个要被反射的对象。

1.调用Class.forName();

代码语言:javascript
复制
public void test() {
  Class cls = Class.forName("com.test.Person");
}

2.使用类的.class字节文件

代码语言:javascript
复制
public void test() {
  Class<?> cls = String.class
}

3.调用对象的getClass方法

代码语言:javascript
复制
public void test() {
  String str = "abc";
  Class<?> cls = str.getClass();
}

验证相同类型class是一个对象

代码验证不同 class 获取 用来同的方式来获取,实际上都是同一个 Class 的实例。

代码语言:javascript
复制
public static void main(String[] args) {
  TestClass testClass = new TestClass();
  Class clazz1 = TestClass.class;
  Class clazz2 = testClass.getClass();
  System.out.println(TestClass.class == clazz1);
  System.out.println(TestClass.class == clazz2);
}

结果:

true true

创建对象

创建对象需要使用到newInstance这个功能。

代码语言:javascript
复制
public void test() {
  Class<User> clazz = User.class;
  User user = clazz.newInstance();
}

即便是泛型的对象也可以创建:

代码语言:javascript
复制
public T1 convert(Class<T1> clazz) {
  T1 t = clazz.newInstance();
  return t
}

获取对象类型

获取 object 具体类型

代码语言:javascript
复制
public void test() {
  TestInterface testInterface = new TestInterfaceImpl();
  String aaa = "cccc";
  getObject(testInterface);
  getObject(aaa);
}

public static void getObject(Object object) {
  System.out.println(object.getClass().getTypeName());
}

结果:

com.liukai.auth.authorization.service.TestInterfaceImpl java.lang.String

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简述
    • 获取Class对象
      • 验证相同类型class是一个对象
      • 创建对象
      • 获取对象类型
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档