in.close java_在Java中自我修改代码[已关闭](Self modifying code in Java [closed])

在Java中自我修改代码[已关闭](Self modifying code in Java [closed])

你有没有创建过或遇到过Java中的自我修改代码 ? 如果是,请发布链接或直接发布代码。

Have you ever created or encountered a self modifying code in Java? If yes, then please post the link or simply post the code.

原文:https://stackoverflow.com/questions/1048496

更新时间:2019-07-10 23:40

最满意答案

忽略悲伤的世界,你可能会通过自我修改的代码(!)造成你自己,在我看来有三种选择:

使用Java 6的内置编译器支持和编写/重新编译/重新加载类

使用Apache BCEL字节码操作库直接编写您的类

利用Java 6的内置脚本支持(或使用Apache BSF )以您选择的JVM脚本语言编写方法,并执行这些

在以上三种情况中,我最初的选择(在没有要求的情况下)将会考虑选项3.我怀疑这是最痛苦的开始。 我已经使用了以上所有内容 - 很遗憾,我无法发布链接到客户端代码。

Ignoring the world of grief you could be causing yourself via self-modifying code(!), it seems to me there are 3 options:

use the inbuilt compiler support of Java 6 and write/recompile/reload classes

use the Apache BCEL bytecode manipulation library to write your class directly

make use of Java 6's inbuilt scripting support (or use Apache BSF) to write methods in your JVM scripting language of choice, and execute these

Of the three above, my initial choice (in the absence of requirements) would be to take a look at option 3. I suspect it's the least painful way to start. I've used all of the above - unfortunately I can't post links to client code.

2009-06-26

相关问答

忽略悲伤的世界,你可能会通过自我修改的代码(!)造成你自己,在我看来有三种选择: 使用Java 6的内置编译器支持和编写/重新编译/重新加载类 使用Apache BCEL字节码操作库直接编写您的类 利用Java 6的内置脚本支持(或使用Apache BSF )以您选择的JVM脚本语言编写方法,并执行这些 在以上三种情况中,我最初的选择(在没有要求的情况下)将会考虑选项3.我怀疑这是最痛苦的开始。 我已经使用了以上所有内容 - 很遗憾,我无法发布链接到客户端代码。 Ignoring the worl

...

马丁·福勒的“重构:改进现有代码的设计”也许是参考: 重构是改进现有代码库设计的受控技术。 其实质是应用一系列小型的行为保留变革,其中每一个都“太小而不值得做”。 然而,这些转换中的每一个的累积效应是相当重要的。 通过小步操作,可以减少引入错误的风险。 您也可以避免系统在进行重组时损坏系统,这样可以在一段时间内逐渐重构系统。 重构与单元测试相辅相成。 在重构之前编写测试,然后在重构中具有置信度(与测试的覆盖范围成比例)。 一个很好的参考是: 关于重构的信息 Martin Fowler's "Ref

...

编译时常数被内联(在javac编译时)。 请参阅JLS,特别是15.28定义一个常量表达式,13.4.9讨论二进制兼容性或最终的字段和常量。 如果使该字段非最终或分配非编译时间常量,则该值不会内联。 例如: private final String stringValue = null!= null?“”:“42”; Compile-time constants are inlined (at javac compile-time). See the JLS, in particular 15.2

...

因为这个项目使用了pyGTK,所以你可以使用glade这是一个gtk表单设计器,但它可能会增加额外的复杂层,而这实际上并不是必需的。 由于您已经熟悉C#/ Java,我建议您运行官方Python教程 。 然后我会看看这个优秀的PyGTK教程 。 如果您花了大约一天时间真正尝试理解Python模型和“pythonic”做事方式,那么您应该能够轻松地修改该程序。 虽然您可能不需要为项目使用IDE和IDE,但如果您愿意,可以使用PyDev使用Eclipse(您可能熟悉Java)。 它允许您在可能熟悉的E

...

我找到了解决方案。 修改后的代码是: package tiesImpl;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

/**

* Prefix table based on Trie structure. Allows to perform incremental lookup

* and match based on search key prefixes (classic exam

...

PMD目前不支持使用帮助器方法来关闭资源。 即使可以配置关闭方法,它们也都假定在资源本身上被调用。 如果PMD执行多类DFA,可能会解决这个问题,目前它不会,并且可能不会持续一段时间(它对缓存结果的能力有很大的影响)。 更好的解决方法是添加支持来指定将资源作为参数的close helper方法。 随意在Github上创建功能请求( https://github.com/pmd/pmd ); 甚至更好,提交PR。 PMD has currently no support to use helper

...

如果你遵循这些步骤,那么你已经建立了它。 我将在这里复制第2.2.10节 。 2.2.10。 构建Wireshark 现在是时候建立Wireshark了...... 如果您在此期间关闭了cmd.exe ,请再次准备cmd.exe nmake -f Makefile.nmake全部构建Wireshark 等待Wireshark进行编译 - 这可能需要一段时间! 运行C:\ wireshark \ wireshark-gtk2 \ wireshark.exe并检查它是否启动 只需在代码中进行更改,然后

...

我注意到你有一个AbstractMethodError 。 参考说: 应用程序尝试调用抽象方法时抛出。 通常,编译器会捕获此错误; 如果自上次编译当前正在执行的方法以来某些类的定义发生了不兼容的更改,则此错误只能在运行时发生。 我担心您的Apache Xerces库可能存在问题。 也许你的运行时使用的是一个没有实现Node#setTextContent(String)的旧版本(因为DOM级别为3)。 以前我修改过您的代码以创建一个可重复性最小的案例。 但事实上它运作良好。 当我从Eclipse J

...

你的代码似乎非常正确。 要使用“Campaign0”,“Campaign1”等查找span元素,可以使用JSoup选择器“span:containsOwn(Campaign0)”。 请参阅jsoup.org上有关JSoup选择器的其他文档。 找到元素并使用链接包装它们之后,调用doc.html()应该返回修改后的HTML代码。 这是一个工作样本: input.html:

101

...

不。当sed退出时,文件将关闭。 这可能是权限问题。 验证您的Windows用户是否具有该文件的写入权限。 如果它位于Windows分区上,请尝试以管理员身份运行Notepad ++。 如果它在Linux共享的fs上,请尝试chmod 。 No. When sed exits, the file is closed. This is probably a permissions issue. Verify that your Windows user has write access to the

...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值