如何公开第三方课程?

时间:2014-02-18 17:28:00

标签: java

如何公开第三方课程?有办法吗?任何黑客?

基本上我扩展了我不拥有的类的功能。我可以看到源代码,但不想破解原始源并重新编译它。

感谢

4 个答案:

答案 0 :(得分:1)

假设该类没有嵌套并且是顶级类(实际上public带有private构造函数),只需创建一个public包装类并拥有方法使用private构造函数调用该类的实例。类似的answer can be found here

答案 1 :(得分:1)

有三种方式:

  1. 使用byte code manipulation(快速但有点复杂)
  2. 使用反射(慢但很简单)
  3. 反编译该类,将其公开并重新编译。基本上这就是字节码操作在飞行中的作用

答案 2 :(得分:0)

您可以使用反射将修改器更改为public。

答案 3 :(得分:0)

使用java反射是最好的方法,虽然我认为你想要的是你想要访问一个字段或方法,这里是你如何使用java反射做到这一点:

////you main class which does the magic
package mytest;

import java.lang.reflect.Field;
import java.lang.reflect.Member;

public class Testing {
        public static void main(String[] args) throws Exception {
            Person c = new Person();
            try {
                Field f = Person.class.getDeclaredField("a");
                f.setAccessible(true);
                Integer i = (Integer)f.get(c);
                System.out.println(i);
            } catch (Exception e) {}
        }
}
///here is another class for this test called person
package mytest;

class Person {
    private Integer a =6;
}