我自己也喜欢反思,但简而言之:这可能是一场噩梦。将 java 反射保持在一个非常可控的范围内(即无状态,不使用全局/外部变量)和最小范围。
要找什么?
要查找变为公开的私有字段和方法,请查找Field#setAccessible()
和Method#setAccessible()
,例如以下示例:
Field privateNameField = Person.class.getDeclaredField("name");
privateNameField.setAccessible(true);
Method privatePersonMethod = Person.class.getDeclaredMethod("personMeth", null);
privatePersonMethod.setAccessible(true);
所以,setAccessible()
会给你一些烟雾,但getDeclaredField()
实际上getDeclaredMethod()
是访问字段的地方(真正引起火灾的原因)。
特别注意它们中使用的值,特别是如果它们是变量(它们可能会),因为它们决定了访问的字段。
进行纯文本搜索
此外,对整个项目文件夹中的字段/方法名称进行纯文本搜索非常有用。我想说,如果您不确定,请不要在进行全文搜索之前删除。
如果您有许多其他项目依赖于您正在尝试更改的项目;如果你不是(或不知道)埋下这些(炸弹)的人,我会放手的。只有在真的需要时才会改变。最好的做法是在您需要对其周围的代码进行更改时一一获取它们。
啊,而且,如果你有它们,运行具有代码覆盖率的测试也可以帮助你大量发现未使用的代码。