Java: несоответствие типов не может быть преобразовано из типа элемента Object в MethodNode

Привет, у меня есть проблемы с этим кодом, и это меня очень беспокоит, потому что я не знаю, как это исправить, если бы вы, ребята, могли бы мне помочь, это было бы здорово!

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;
        }

Как это исправить?


person Frunk    schedule 06.02.2013    source источник
comment
что возвращает c.methods?   -  person Abubakkar    schedule 06.02.2013
comment
Какую версию ASM вы используете?   -  person Perception    schedule 06.02.2013


Ответы (1)


Тип cn.methods должен быть либо Object[], либо Iterable<Object>.

Вам придется использовать:

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

Или исправьте тип cn.methods, чтобы быть более конкретным.

person jtahlborn    schedule 06.02.2013