我希望能够比较一个类/库的两个版本,以确定是否有任何更改可能会破坏调用它的代码。例如,考虑一些在版本 a 中具有方法的类 Foo:
public String readWidget(Object widget, Object helper);
在版本 b 中,该方法变为:
public String readWidget(Object widget); //removed unnecessary helper object
或在字段的情况下类似的东西:
version a: public static Object sharedFoo;
version b: static Object sharedFoo; //moved to package private for version b
我想要一个将这些更改标记为潜在不兼容性的工具(但理想情况下不是相反,即增加方法的可见性)。现在我知道我可以通过反射或分析 javap 的输出来做到这一点,但是似乎应该有一个现有的工具(最好是非商业的)。所以我想看看是否有人可以推荐一些东西,然后再犯下自己动手/不必要地重新发明轮子的错误。