【发布时间】:2015-02-16 22:16:52
【问题描述】:
我实际上遇到了 ProGuard 4.11 的问题,它从 if (a!=null) { a.a(); } 中删除了 if 语句并保留了 a.a();。
我假设 ProGuard 正在考虑 a 不能是 null,但这是错误的。这会导致 NullPointerException。
if 语句是从涉及父构造函数的复杂构造调用的。
问题:
是否可以在不停用所有优化的情况下阻止 ProGuard 进行此优化?
是否有任何过滤器优化选项?
问候。
【问题讨论】:
-
我会说你应该避免这样的空检查,并更多地担心你为什么传递了
null值。 -
你能告诉我们一个发生这种情况的例子吗?看起来更像是您应该针对 ProGuard 提交错误,而不是解决该问题。
-
问题更多的是要知道是否可以停用这种优化,而无需停用所有优化。 ProGuard 问题对我来说只是次要问题,因为我可以用 4.10 版本解决它(目前没有用 5.0 测试)
标签: java optimization proguard