首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >有哪些方法可以在运行时动态生成一个Java类?

有哪些方法可以在运行时动态生成一个Java类?

作者头像
葆宁
发布于 2019-04-18 07:15:41
发布于 2019-04-18 07:15:41
2.6K00
代码可运行
举报
文章被收录于专栏:FREE SOLOFREE SOLO
运行总次数:0
代码可运行

我们可以从常见的 Java 类来源分析,通常的开发过程是,开发者编写 Java 代码,调用 javac编译成 class 文件,然后通过类加载机制载入 JVM,就成为应用运行时可以使用的 Java 类了。从上面过程得到启发,其中一个直接的方式是从源码入手,可以利用 Java 程序生成一段源码,然后保存到文件等,下面就只需要解决编译问题了。 有一种笨办法,直接用 ProcessBuilder 之类启动 javac 进程,并指定上面生成的文件作为输入,进行编译。最后,再利用类加载器,在运行时加载即可。

对于一个普通的 Java 动态代理,其实现过程可以简化成为: 提供一个基础的接口,作为被调用类型(com.mycorp.HelloImpl)和代理类之间的统一入 口,如 com.mycorp.Hello。 实现InvocationHandler,对代理对象方法的调用,会被分派到其 invoke 方法来真正实现动 作。通过 Proxy 类,调用其 newProxyInstance 方法,生成一个实现了相应基础接口的代理类实例,可以看下面的方法签名。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static Object newProxyInstance(ClassLoader loader,
Class<?>[] interfaces,
InvocationHandler h)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年04月13日,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【JAVA】不会有人不知道 Java 类能够在运行时动态生成吧?
我们可以从常见的 Java 类来源分析,通常的开发过程是,开发者编写 Java 代码,调用 javac 编译成 class 文件,然后通过类加载机制载入 JVM,就成为应用运行时可以使用的 Java 类了。
sidiot
2023/08/31
7430
你真的完全了解Java动态代理吗?看这篇就够了
之前讲了《零基础带你看Spring源码——IOC控制反转》,本来打算下一篇讲讲Srping的AOP的,但是其中会涉及到Java的动态代理,所以先单独一篇来了解下Java的动态代理到底是什么,Java是怎么实现它的。
Zack说码
2019/08/05
4510
你真的完全了解Java动态代理吗?看这篇就够了
Java常用动态代理模式
JDK中生成代理对象的API   代理类所在包:java.lang.reflect.Proxy   JDK实现代理只需要使用newProxyInstance方法,但是该方法需要接收三个参数,完整的写法是:
用户7999227
2021/10/07
4430
Java动态代理原理及解析
代理:设计模式 代理模式是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个真实对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。 通过
Spark学习技巧
2018/04/17
1.2K1
Java动态代理原理及解析
动态代理那些事
静态代理优点在于,业务类只需关注业务本身,保证了业务类的重用性,这也是代理模式共有的优点;
蜻蜓队长
2019/03/08
3530
看完这篇文章,你不可能不懂「动态代理」
虽然学会了静态代理,但是招财这几天仍然是有些闷闷不乐,因为始终没有想出上次陀螺留给自己的问题的解决思路。
蝉沐风
2022/08/22
3360
看完这篇文章,你不可能不懂「动态代理」
大厂高级工程师面试必问系列:Java动态代理机制和实现原理详解
通过代理层这一中间层,有效的控制对于真实委托类对象的直接访问,同时又可以实现自定义的控制策略,比如Spring中的AOP机制,这样使得在设计上获得更大的灵活性
攻城狮Chova
2022/01/22
4060
大厂高级工程师面试必问系列:Java动态代理机制和实现原理详解
SpringJDK动态代理
前面文章我们学习了关于Spring的IOC与AOP相关知识点,在此之前,我们主要学习Spring的一些核心概念,IOC和AOP等等。我们之前学习了简单了解了AOP如何借助动态字节码技术来构建动态代理类。实现动态代理的方式不止一种。本次系列文章主要介绍两种:JDK动态代理和CGlib动态代理,主要主要介绍JDK动态代理。首先,我们将着重了解JDK动态代理的核心原理和实际应用情境。好了,话不多说,让我们开始吧😎😎😎。
程序员Leo
2023/11/16
2270
SpringJDK动态代理
Java进阶 | Proxy动态代理机制详解
在说Java动态代理之前,还是要说一下Jvm加载对象的过程,这个依旧是理解动态代理的基础性原理:
知了一笑
2021/07/07
1.1K0
Java进阶 | Proxy动态代理机制详解
设计模式:这是一份全面 & 清晰的动态代理模式(Proxy Pattern)学习指南
今天我来全面讲解Android开发中最常用的设计模式 - 代理模式中的动态代理模式
Carson.Ho
2019/02/22
3880
面试不再怕-说透动静态代理!
存在一个常见的需求:怎样在不修改类A代码的情况下,在调用类A的方法时进行一些功能的附加与增强呢?
洋仔聊编程
2020/05/25
5400
面试不再怕-说透动静态代理!
如何动态生成一个Java类
开发者编写Java 代码,调用 javac 编译生成 class 文件。然后通过类加载机制载入 JVM ,即成为了应用可以使用的 Java 类。
王小明_HIT
2020/07/01
2.5K0
如何动态生成一个Java类
JDK动态代理实现原理(jdk8)
天天的都听到人们说JDK动态代理,听上去感觉好屌的样子,为什么要叫JDK动态代理?
Java栈
2019/07/28
1.2K0
深聊-代理模式与反射
它为现有的每一个类都编写一个对应的代理类,并且让它实现和目标类相同的接口。在创建代理对象时,通过构造器塞入一个目标对象,然后在代理对象的方法内部调用目标对象同名方法,并在调用前后打印日志。
浅墨清心
2022/05/12
3800
反射、注解和动态代理
反射是指计算机程序在运行时访问、检测和修改它本身状态或行为的一种能力,是一种元编程语言特性,有很多语言都提供了对反射机制的支持,它使程序能够编写程序。Java的反射机制使得Java能够动态的获取类的信息和调用对象的方法。
良月柒
2019/03/20
5920
反射、注解和动态代理
6.5 代理
6.5 代理   利用代理可以在运行时创建一个实现了一组给定接口的新类,这种功能只有在编译时无法确定需要实现哪个接口时才有必要使用。   结社有一个表示接口的Class对象(有可能只包含一个接口),它的确切类型在编译时无法知道。要想构造一个实现这些接口的类,就需要使用newInstance方法或反射找出这个类的构造器。但是不能实例化一个接口,需要在程序处于运行状态时定义一个新类。 常规但比较笨重的解决方式:程序生成代码,将代码放置在一个文件中,调用编译器,然后再加载结果类文件。这样的速度比较慢,并且需要
Mister24
2018/05/14
5140
Spring 初识Aop JDK动态代理实现 原理初显
Spring 初识Aop JDK动态代理实现 原理初显 一、项目结构 二、具体步骤: 1、创建maven项目 创建好包结构 2、写一个TestDao接口 及实现类 3、 写一个自己的切面类 4、java JDK 实现动态代理 5、JDK 动态代理测试 6、Cglib 实现动态代理 7、Cglib 测试 三、自言自语 Spring-AOP-理论知识 一、项目结构 二、具体步骤: 1、创建maven项目 创建好包结构 2、写一个TestDao接口 及实现类 /** * @version 1.0
宁在春
2022/10/31
2280
Spring 初识Aop JDK动态代理实现 原理初显
Java的动态代理
闻说社
2025/02/27
1611
Java的动态代理
底层源码分析,带你彻底看懂Java Proxy类创建代理类实现原理
在Java中,动态代理是非常重要的一个概念,是一种实现 AOP(面向切面编程)的方式,具有以下优点:
Jeremy_
2023/10/26
6541
Java 静态代理、Java动态代理、CGLIB动态代理
Java 的代理就是客户类不再直接和委托类打交道, 而是通过一个中间层来访问, 这个中间层就是代理。为啥要这样呢, 是因为使用代理有 2 个优势:
java思维导图
2019/05/21
7.2K0
相关推荐
【JAVA】不会有人不知道 Java 类能够在运行时动态生成吧?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档