Java ProGuard删除方法调用创建无用代码

Java ProGuard删除方法调用创建无用代码,java,methods,proguard,Java,Methods,Proguard,所以我有一个小界面 public interface IPlayersStorage { // other methods... public boolean addException(final String nick); // other methods... } 和实现它的类“PlayersStorage:(仅使用部分) 并将其更改为: for (Iterator localIterator1 = this.cfg.getStringList("Exception

所以我有一个小界面

public interface IPlayersStorage
{
    // other methods...
    public boolean addException(final String nick);
    // other methods...
}
和实现它的类“PlayersStorage:(仅使用部分)

并将其更改为:

for (Iterator localIterator1 = this.cfg.getStringList("Exceptions").iterator(); localIterator1.hasNext();)
{
  localIterator1.next();

  PlayersStorage.getStorage();  // it's get object, but don't do anything with it...
}
我找到的唯一可能的修复方法是将静态方法添加到
PlayersStorage

public static boolean staticAddException(final String nick)
{
    return inst.addException(nick);
}
然后使用它(而不是旧代码)


然后工作。。。(ProGuard keep method call)但为接口中的每个方法添加静态方法不是一个好主意。

ProGuard仅在方法调用没有任何效果(这里似乎不是这种情况)或者您为方法指定了
-AssumeNosiDefects
时才删除方法调用。您应该检查配置并删除任何此类选项

或者,反编译器可能在反编译代码时遇到问题。然后应该使用
javap-c
检查实际字节码

for (Iterator localIterator1 = this.cfg.getStringList("Exceptions").iterator(); localIterator1.hasNext();)
{
  localIterator1.next();

  PlayersStorage.getStorage();  // it's get object, but don't do anything with it...
}
public static boolean staticAddException(final String nick)
{
    return inst.addException(nick);
}
for (final String player : this.cfg.getStringList("Exceptions"))
{
    PlayersStorage.staticAddException(player);
}