0

こんにちは、私はこのコードに問題があり、修正方法がわからないので本当に困っています。もし皆さんが私を助けてくれたら、それは素晴らしいことです!

public void execute(final String name, final ClassNode cn) {
    Updater.getInstance().getClasses().set("Animable", cn);
    addProcessor(new AddInterfaceProcessor(this, cn.name, ACCESSOR_DESC + "Animable"));
    for (final MethodNode mn : cn.methods) {
        if ((mn.access & (Opcodes.ACC_ABSTRACT | Opcodes.ACC_STATIC | Opcodes.ACC_NATIVE)) != 0 || !mn.desc.equals("()Z")) {
            continue;
        }
        final RIS ris = new RIS(mn);
        FieldInsnNode fin;
        for (int i = 0; i < 4; i++) {
            if ((fin = ris.next(FieldInsnNode.class, Opcodes.GETFIELD)) == null) {
                continue;
            }
            addProcessor(new AddGetterProcessor(this, "get" + ((i & 1) != 0 ? "Max" : "Min") + (char) (Math.max(0, Math.min(1, i - 1)) + 88), fin.desc, cn.name, fin.name, fin.desc, false));
        }
        break;
    }
}

そして問題はこの部分にあります:

for (final MethodNode mn : cn.methods) {
        if ((mn.access & (Opcodes.ACC_ABSTRACT | Opcodes.ACC_STATIC | Opcodes.ACC_NATIVE)) != 0 || !mn.desc.equals("()Z")) {
            continue;
        }

どうすれば修正できますか?

4

2 に答える 2

1

の型は または のいずれかでなけれcn.methodsばなりません。Object[]Iterable<Object>

以下を使用する必要があります。

for (final Object obj : cn.methods) {
  MethodNode mn = (MethodNode)obj;

cn.methodsまたは、タイプをより具体的に修正します。

于 2013-02-06T18:05:19.313 に答える
0
Objects mn and cn needs to be Initialized before u use in . 

for (final MethodNode mn : cn.methods) {
        if ((mn.access & (Opcodes.ACC_ABSTRACT | Opcodes.ACC_STATIC | Opcodes.ACC_NATIVE)) != 0 || !mn.desc.equals("()Z")) {
            continue;
        }
于 2013-02-06T18:02:59.253 に答える