我已经用http://www.ow2.org/view/ActivitiesDashboard/ASM库写了一个简短的课程。 Eclipse(版本:4.3.1 构建ID:M20130911-1000)将标记的语句标记为错误(“类型不匹配:无法从元素类型Object转换为FieldNode ”)。我正在使用 jre7 进行编译。这是不正确的,因为使用的jar的源代码显示。但首先,这是我的课程来源:
import org.objectweb.asm.tree.ClassNode;
public class AccessTransformer
{
ClassNode classNode = new ClassNode();
public byte[] transform(String name, String transformedName, byte[] bytes)
{
for (FieldNode n : this.classNode.fields) // <----- HERE IS THE ERROR
{
if (n.name.equals("test"))
{
n.access = 0;
}
}
}
}
jar虽然陈述(类org.objectweb.asm.tree.ClassNode):
/**
* The fields of this class. This list is a list of {@link FieldNode}
* objects.
*
* @associates org.objectweb.asm.tree.FieldNode
*/
public List<FieldNode> fields;
有没有人知道我做错了什么?我怎样才能确保eclipse“看到”列表的参数化类型为FieldNode? p>
我尽量不使用反射,因为它会减慢过程的速度。我可以介绍一个“不安全”的演员,但问题是更多元,我想知道为什么eclipse显示“类型不匹配”。