`
Goodtiger
  • 浏览: 106921 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

为注释而修改类的字节码

    博客分类:
阅读更多
读了这段文字,我有一个地方没有想明白,就是红色的部分,为什么不能因为注释而修改类的字节码



注释在一些场景中非常有用。当不是直接修改行为而是增强行为时,特别是在添加样板代码的情况下,注释在诸如EJB和Web services这样的框架中运行得非常好。
注释不能用做预处理器。Sun的设计特别预防了完全因为注释而修改类的字节码。这样可以正确地理解该语言的成果,而且IDE之类的工具也可以执行深入的代码分析和重构之类的功能。
注释不是银弹。第一次遇到的时候,人们试图尝试各种技巧。请看下面这个从别人那里获得的建议:

public class Foo {
 
    @Property
    private int bar;
 
}

  其思想是为私有字段bar自动创建getter和setter方法。遗憾的是,这个想法有两个失败之处:1)它不能运行,2)它使代码难以阅读和处理它是无法实现的,因为前面已经提到了,Sun特别阻止了对出现注释的类进行修改。  即使是可能的,它也不是一个好主意,因为它使代码可读性差。第一次看到这段代码的人会不知道该注释创建了方法。此外,如果将来您需要在这些方法内部执行一些操作,注释也是没用的。总之,不要试图用注释去做那些常规代码可以完成的事情。

分享到:
评论

相关推荐

    Java字节码反编译

    总的来说,Java字节码反编译是一个有价值的技能,尤其对于Java开发人员和安全专家而言。通过理解字节码和掌握反编译工具,我们可以深化对Java程序的理解,提高解决问题的能力。然而,也应尊重软件的知识产权,只在...

    Android-EasyMVP–一个强大非常简单的MVP库具有注释处理和字节码编织功能

    字节码编织(Bytecode weaving)是另一个关键特性,它允许在程序运行前修改字节码,动态插入额外的代码。EasyMVP利用了这个技术,可以在运行时自动处理Presenter的生命周期,比如在Activity或Fragment的生命周期方法...

    java字节码文件反编译器

    Java字节码文件反编译器是一款非常实用的工具,主要针对Java开发者或者逆向工程爱好者,用于查看和理解已编译的Java类文件。在Java编程中,源代码会被编译成字节码(.class文件),这些字节码是机器不可读的二进制...

    java修改class文件工具jbe

    2. **JBE 工具**:JBE 提供了一个图形用户界面(GUI),使得开发者可以方便地浏览、分析和修改字节码。它可以显示类的结构,包括常量池、字段、方法、指令等,并允许用户添加、删除或修改这些元素。 3. **字节码...

    Python-uncompyle6跨版本的Python字节码反编译器

    例如,当一个模块只提供了预编译的字节码文件而没有源代码时,开发者可以借助uncompyle6来查看或修改模块的内部实现。此外,它也可以在安全审计中发挥作用,帮助分析可能包含恶意代码的预编译模块。 "rocky-python-...

    pbc.rar注释版

    4. PBC的优化:如何通过修改字节码来提升程序性能。 5. 字节码反编译:使用工具如`dis`模块将字节码转换回源代码,便于理解。 6. 字节码分析:如何通过分析字节码来调试和优化代码。 7. Python的动态特性和字节码的...

    java反编译(将class文件反向编译成java源文件)

    4. **源代码生成**:基于以上分析,反编译器将字节码转换为接近原始源代码的格式。 需要注意的是,反编译可能会导致一些信息的丢失,比如注释、原始变量名(如果未进行混淆)以及特定的代码格式。此外,反编译的源...

    jd-gui及注释清理工具

    JD-GUI是一款强大的反编译工具,主要用于查看和分析Java应用程序的字节码,将其转换为源代码形式。它能够帮助开发者在没有源代码的情况下理解jar包内部的工作机制,是软件逆向工程的重要辅助工具。在Java开发过程中...

    ASM-demo.zip

    1. 示例类源代码:可能包含一个简单的 Java 类,这个类会被 ASM 用来生成或修改字节码。这些源代码通常包含注释,解释了 ASM 如何与之交互。 2. ASM 使用示例:这可能是一个 Java 类或者一个脚本,演示如何使用 ASM ...

    JVM优化3(Tomcat参数调优,JVM参数调优,jvm字节码,代码优化).pdf

    总结而言,该文档覆盖了Tomcat服务器优化、JVM参数调整、字节码级别的优化以及代码层面的优化等多个方面,旨在通过一系列配置和操作,提升Java应用以及Web服务器的性能和效率。同时,也提到了性能测试的重要性和在...

    PropertyChangeSupportPlugin:使用字节码编织为带注释的 bean 添加 PropertyChangeListener 支持的 Maven 插件

    字节码编织是一种在运行时或编译时修改类文件的技术,可以用来添加、修改或删除类的方法、字段和属性。在这个场景下,插件会寻找被注解的类,并自动插入必要的代码以实现 `PropertyChangeEvent` 的发布和监听。 **...

    luyten 0.5 汉化版(JAVA反编译工具)

    1. **反编译**:Luyten可以将Java字节码反编译成接近原始的Java源代码,帮助开发者理解和分析已编译的类。这对于学习开源库、修复bug或进行安全审计非常有帮助。 2. **资源查看**:除了反编译代码,Luyten还允许...

    enjarify-1.0.3.zip

    《enjarify:将Dalvik字节码转换为JVM字节码的工具》 在Android应用开发中,Dalvik字节码是Android系统中运行应用程序的基础,它是一种专为移动设备优化的虚拟机指令集。然而,在某些情况下,开发者可能需要将...

    LUAC反编译_LUC_lua反编译工具_luac_luac解密工具_Lua解密_

    然而,有时候开发者可能需要查看或修改编译后的字节码,这就需要用到反编译工具。"LUC lua反编译工具"是一个这样的工具,它可以将LUAC编译后的字节码转换回接近原始的Lua源代码。这种工具对于逆向工程、游戏脚本分析...

    javassist-3.18.2-GA.jar

    Javaassist 是一个强大的 Java 字节码操作库,它允许开发者在运行时动态修改或创建类。这个库在软件开发中的主要用途是实现元编程,即在程序运行时修改程序的行为。`javassist-3.18.2-GA.jar` 是 Javaassist 的一个...

    lua反编译工具

    需要注意的是,由于lua的动态特性和字节码的抽象性,反编译的过程可能会丢失一些源代码的元信息,如注释和精确的变量名。 总的来说,lua反编译工具如luadisasm是lua开发者和研究者的重要工具,它们帮助我们揭示隐藏...

    java基础习题

    5. **Java虚拟机的运行过程**:主要包括加载类、验证类、准备类、解析类、初始化类以及执行字节码。 6. **Java字节码的执行方式**:有两种,一是解释执行,JVM逐行解释字节码;二是JIT编译,将频繁执行的代码编译...

    最新Java面试题

    静态成员属于类而不属于某个具体的对象。 - **`final`和`abstract`关键字的作用**: - `final`:用来修饰类、方法或变量,表示不可修改或最终状态。 - `abstract`:用来修饰类或方法,表示抽象类不能被实例化,...

    Android反编译工具集

    `dex2jar`是一个Java项目,它将Dalvik字节码转换为Java字节码,使得我们可以使用Java反编译器查看类和方法。 - 接着,使用`jd-gui`或`jd-cli`(Java Decompiler)将`.jar`文件反编译为Java源码。这些工具能够解析...

Global site tag (gtag.js) - Google Analytics