字节码编程javassist之定义各种属性

写在前面

源码 。
本文看下如何使用javassist来定义属性。

1:程序

package com.dahuyou.javassist.generateFieldAndMethod;

import javassist.*;

import java.lang.reflect.Method;

public class JustDoIt111 {
    public static void main(String[] args) throws Exception {
        ClassPool pool = ClassPool.getDefault();

        CtClass ctClass = pool.makeClass("com.dahuyou.javassist.generateFieldAndMethod.generateFieldAndMethod_javassist");

        // 创建属性字段 double 原始类型
        CtField ctField1 = new CtField(CtClass.doubleType, "var1", ctClass);
        ctField1.setModifiers(Modifier.PRIVATE + Modifier.STATIC + Modifier.FINAL);
        ctClass.addField(ctField1, "3.14");

        // 创建属性字段 double 对象类型 需要使用 pool.get(Double.class.getName()) 来指定数据类型
        CtField ctField2 = new CtField(pool.get(Double.class.getName()), "var2", ctClass);
        ctField2.setModifiers(Modifier.PUBLIC);
        ctClass.addField(ctField2, "62.3");

        // 创建属性字段 Object 对象类型 需要使用 pool.get(Double.class.getName()) 来指定数据类型
        CtField ctField3 = new CtField(pool.get(Object.class.getName()), "var3", ctClass);
        ctField3.setModifiers(Modifier.STATIC);
        ctClass.addField(ctField3);

        CtField ctField4 = new CtField(CtClass.intType, "var4", ctClass);
        ctField4.setModifiers(Modifier.FINAL);
        ctClass.addField(ctField4, "44");

        ctClass.writeFile();
    }
}

对象类型的话需要使用pool.get(XX.class.getName()),基础数据类型的话直接使用CtClass.xxxType即可,运行一下:
在这里插入图片描述

写在后面

参考文章列表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/774124.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python】已解决:NameError: name ‘reload’ is not defined

文章目录 二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决:NameError: name ‘reload’ is not defined 一、分析问题背景 在使用Python进行开发时,有时我们可能需要重新加载某个已经导入的模块,以便应用模块中的最…

idm下载慢怎么回事 idm批量导入下载使用方法

IDM (Internet Download Manager)是一款兼容性大,支持多种语言的下载管理软件,它可以自动检测并下载网页上的内容,这正是这一优点,使得它受到了广大用户的喜爱。在日常使用互联网的过程中,快速下载文件对我们来说非常重…

排序(1)

接下来&#xff0c;我们就来到了排序的章节&#xff0c;嘿嘿&#xff01;加油&#xff01; 冒泡排序 void BubbleSort(int* a,int n) {for(int j0;j<n;i){for(int i1;i<n-j;i){if(arr[i-1]>arr[i]){swap(&arr[i-1],&arr[i]);}}}} 插入排序 时间复杂度&…

【网工】关于链路聚合、静态路由、单臂路由的一个小实验

最近刚考完期末放暑假&#xff0c;那几天没看csdn结果有个朋友发了这样一个实验&#xff1a; 虽然晚了点 也不知道这位朋友还需不需要 但还是弄了出来 分享给大家 一起学习 下面是一些关键配置代码参考

h5 video 标签播放经过 java 使用 ws.schild( jave、ffmpeg ) 压缩后的 mp4 视频只有声音无画面的问题排查记录

1. 引入 ws.schild MAVEN 依赖&#xff1a; <dependency><groupId>ws.schild</groupId><artifactId>jave-all-deps</artifactId><version>3.5.0</version></dependency><dependency><groupId>ws.schild</grou…

你真的会ELISA加样吗?

在ELISA实验中&#xff0c;研究人员需要进行多次加样步骤完成实验操作。对于常规双抗体夹心法ELISA&#xff0c;一般有如下加样步聚&#xff0c;即加样本、加检测抗体、加酶结合物、加底物&#xff08;最后加终止液停止反应&#xff09;。 加样步骤基础知识 加样步骤中一般使用…

华为OD机试2024年最新题库 JAVA C卷+D卷

目录 专栏导读华为OD机试算法题太多了&#xff0c;知识点繁杂&#xff0c;如何刷题更有效率呢&#xff1f; 一、逻辑分析二、数据结构1、线性表① 数组② 双指针 2、map与list3、队列4、链表5、栈6、滑动窗口7、二叉树8、并查集9、矩阵 三、算法1、基础算法① 贪心思维② 二分查…

解决npm与yarn痛点:幽灵依赖与依赖分身

前言 在现代前端开发流程中&#xff0c;包管理工具扮演着至关重要的角色&#xff0c;其中npm和yarn是两个非常流行的JavaScript包管理工具。虽然它们为开发者提供了极大的便利&#xff0c;但也存在一些痛点&#xff0c;特别是关于“幽灵依赖&#xff08;Phantom Dependencies&a…

开放式耳机哪个牌子好?五款畅销产品推荐,免交智商税!

作为开放式耳机的测评博主&#xff0c;在最近又淘到了几款比较不错的开放式耳机&#xff0c;所以今天这篇文章&#xff0c;我也给大家推荐五款开放式耳机&#xff0c;内附还有我自己总结的开放式耳机的指南&#xff0c;希望各位小伙伴也能够看的开心&#xff0c;挑选到自己比较…

taoCMS v3.0.2 文件上传漏洞(CVE-2022-23880)

前言 CVE-2022-23880是一个影响taoCMS v3.0.2的任意文件上传漏洞。攻击者可以利用此漏洞通过上传特制的PHP文件在受影响的系统上执行任意代码。 漏洞细节 描述: 在taoCMS v3.0.2的文件管理模块中存在任意文件上传漏洞。攻击者可以通过上传恶意的PHP文件来执行任意代码。 影响…

YUM——简介、安装(Ubuntu22.04)

1、简介 YUM&#xff08;Yellowdog Updater, Modified&#xff09;是一个开源的命令行软件包管理工具&#xff0c;主要用于基于 RPM 包管理系统的 Linux 发行版&#xff0c;如 CentOS、Red Hat Enterprise Linux (RHEL) 和 Fedora。YUM 使用户能够轻松地安装、更新、删除和管理…

识别 Spring Cloud 配置文件的规则:Nacos, Bootstrap, Application

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

vue3【提效】使用 VueUse 高效开发(工具库 @vueuse/core + 新增的组件库 @vueuse/components)

Vueuse 是一个功能强大的 Vue.js 生态系统工具库&#xff0c;提供了可重用的组件和函数&#xff0c;帮助开发者更轻松地构建复杂的应用程序。 官网 &#xff1a;https://vueuse.org/core/useWindowScroll/ 安装 VueUse npm i vueuse/core vueuse/components&#xff08;可选&a…

收银系统源码-ERP报损管理

千呼新零售2.0系统是零售行业连锁店一体化收银系统&#xff0c;包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体&#xff0c;线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货、宠物等连锁店使用。 详细介绍请…

揭秘!为何电路工程师都爱用在线化电路仿真软件?7大理由让你秒懂!

在科技日新月异的今天&#xff0c;电路设计与仿真技术已经成为电子工程领域不可或缺的一部分。随着在线化电路仿真软件的兴起&#xff0c;越来越多的工程师选择使用这种便捷、高效的工具来辅助他们的工作。那么&#xff0c;究竟是什么让在线化电路仿真软件如此受欢迎呢&#xf…

强烈建议!所有Python基础差的同学,死磕这本64页的背记手册!

Python背记手册是一份非常实用的学习资料&#xff0c;它涵盖了Python语言的基础知识、语法规则、常用函数和模块等内容&#xff0c;对于初学者和有一定基础的Python程序员来说都非常有用。通过背诵这份手册&#xff0c;可以加深对Python语言的理解和记忆&#xff0c;提高编程能…

Datadog Dash 2024 新功能解析

Datadog 2024 年的 Dash 刚刚落下帷幕&#xff0c;作为正在与 Datadog 开始竞争的观测云&#xff0c;我们认真仔细的分析了 Datadog 的每一个新功能&#xff0c;发现一些很有意思的事情&#xff0c;今天就给大家做一次全面的分析。&#xff08;所有 Datadog 的 Dash 的最新功能…

【解码现代 C++】:实现自己的智能 【String 类】

目录 1. 经典的String类问题 1.1 构造函数 小李的理解 1.2 析构函数 小李的理解 1.3 测试函数 小李的理解 1.4 需要记住的知识点 2. 浅拷贝 2.1 什么是浅拷贝 小李的理解 2.2 需要记住的知识点 3. 深拷贝 3.1 传统版写法的String类 3.1.1 拷贝构造函数 小李的理…

Pspice添加新的元器件

1.下载好的Pspice的模型文件。 2.将模型文件的&#xff0c;识别类型修改为 lib 选择Pspice的模型路径 会立马跳出&#xff0c;下面的这个窗口。 核实元器件图形&#xff0c;没问题。 添加Pspic仿真模型文件 验证&#xff0c;是否添加模型文件成功 使用模型文件

学会python——用python制作一个登录和注册窗口(python实例十八)

目录 1.认识Python 2.环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3.登录和注册窗口 3.1 代码构思 3.2 代码实例 3.3 运行结果 4.总结 1.认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读…