IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Java反射机制的一个小示例 -> 正文阅读

[开发工具]Java反射机制的一个小示例

作者:recommend-item-box type_download clearfix

目录结构
在这里插入图片描述

User

package com.xiao.entity;

/**
 * @author 
 * @version 1.0
 * @date 5/8/2022 12:56 PM
 */
public class User {
}

父类

package com.xiao;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

/**
 * @author 
 * @version 1.0
 * @date 4/23/2022 11:24 PM
 */
public class T1 <T>{
    public T1() {
       /*
       //获取继承了类
        Class<? extends T1> aClass = getClass();
        System.out.println("getClass():"+aClass);
        //得到基础类的通用的超类
        Type genericSuperclass = getClass().getGenericSuperclass();
        System.out.println("genericSuperclass: "+ genericSuperclass);
        //参数化
        ParameterizedType genericSuperclass1 = (ParameterizedType) getClass().getGenericSuperclass();
        System.out.println("genericSuperclass1: "+genericSuperclass1);
        //实际的类型参数
        Type actualTypeArgument = ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
        System.out.println("actualTypeArgument: "+actualTypeArgument);
        //反射机制,反射什么啥?
        Class<T> actualTypeArgument1 = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
        System.out.println("actualTypeArgument1: " +actualTypeArgument1);
        //获取简单名称,相对于前面的几个步骤
        String simpleName = ((Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]).getSimpleName();
        System.out.println("simpleName: " + simpleName);*/

        //获取继承类,getClass():class com.xiao.T2
        Class<? extends T1> aClass = getClass();
        System.out.println("getClass():"+aClass);
        //获取被继承类,genericSuperclass: com.xiao.T1<com.xiao.entity.User>
        Type genericSuperclass = aClass.getGenericSuperclass();
        System.out.println("genericSuperclass: "+ genericSuperclass);
        //参数化 ,我目前看不出来发生了什么变化g enericSuperclass1: com.xiao.T1<com.xiao.entity.User>
        ParameterizedType genericSuperclass1 = (ParameterizedType) genericSuperclass;
        System.out.println("参数化 genericSuperclass1: "+genericSuperclass1);
        //获取超级类的实际类型参数 actualTypeArgument: class com.xiao.entity.User
        Type actualTypeArgument = genericSuperclass1.getActualTypeArguments()[0];
        System.out.println("actualTypeArgument: "+ actualTypeArgument);
        //如果没有反射机制,就没法获取实际类型参数的名称了
        /*
        反射机制
            在运行状态中。
            对于任意一个类,都能够知道这个类的所有的属性和方法;
            对于任意一个对象,都能够调用它的任意一个方法和属性;
            这种动态获取的信息以及动态调用对象的方法的功能就是反射机制。
        * */
        String typeName = actualTypeArgument.getTypeName();
        System.out.println("typeName: "+typeName);
        String s = actualTypeArgument.toString();
        System.out.println("s:" + s);
        Class<? extends Type> aClass1 = actualTypeArgument.getClass();
        System.out.println("aClass1: " + aClass1);
        //反射机制 actualTypeArgument1: class com.xiao.entity.User
        Class<T> actualTypeArgument1 = (Class<T>) actualTypeArgument;
        System.out.println("actualTypeArgument1: "+ actualTypeArgument1);
        Class<? extends Class> actualTypeArgument1Class = actualTypeArgument1.getClass();
        System.out.println("actualTypeArgument1Class: " + actualTypeArgument1Class);
        //获取名称
        String simpleName = actualTypeArgument1.getSimpleName();
        System.out.println("simpleName: "+simpleName);

    }
}

子类

package com.xiao;

import com.xiao.entity.User;

/**
 * @author 
 * @version 1.0
 * @date 4/23/2022 11:26 PM
 */
public class T2<T> extends T1<User> {
    public static void main(String[] args) {
        T2 t = new T2();
    }
}

祝你好运!

希望能帮你理解些!注释的内容可以不用看,本人随便写的个人感受。
下面部分的内容不用看了!!!!
下面部分的内容不用看了!!!!

有些说法可能不太合理,希望多多参考,我也是今天开始了解这个java反射机制。之前,老师也有将,没怎么用?所以没怎么了解,等真正需要的时候才肯去学,肯了解。多看看有些的开源项目,拿来学学?多上网搜搜,我这个也是参考别人的代码,让后试着去理解,并标记,我的方法可能有误,当然,目前本人根据自己还是这个行业的门外汉。哎!

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-05-11 16:37:47  更:2022-05-11 16:38:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 3:30:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码