我有一个名为 MyVisitor 的类,它扩展了另一个名为 Value 的类。在 MyVisitor 中的一个方法中,我必须在HashMap中存储一个值数组。但是,由于 MyVisitor 仅扩展值,因此我无法在HashMap中返回 Value [] 。由于我对Java的了解有限,这是我找到的解决方案:
在我的 Value 课程中,我有:
public static int x;
public static Value ARRAY = new Value(new Object[x]); // I assume this would return an array of Objects of size x?
public Object[] objArray(){
return (Object[])value;
}
在MyVisitor类中,我有这个HashMap:
public Map<String, Value> array_memory = new HashMap<String, Value>();
在MyVisitor类中,我有一个名为 array 的方法,它使用Value.ARRAY,如下所示:
Value.x = x; //Would change the value of public static int x in class Value
return array_memory.put(id, Value.ARRAY);
我还有一个名为 arrayDec 的方法,它调用数组并执行以下操作:
array(ctx);
String key = ctx.ID().getText();
Object[] val = array_memory.get(key).objArray();
System.out.println(val.length);
val.length打印0
我有以下问题:
= new Value(new Object[Value.x]);
是否实际创建了一个大小为x的对象数组并将其屏蔽为值?困惑?是的我也是:(
另外,如果你想知道为什么我这样做,我的一个课程中有一个项目要求我们创建自己的编译器/解释器。我试图实现数组。我使用antlr4帮助我(因此其中一个片段中的ctx.ID()。getText())
任何帮助将不胜感激。如果你对我应该如何实现这一点有更好的了解,我可以接受建议。或者,如果你知道在antlr4中实现数组的任何链接,那也是很棒的。谢谢!
答案 0 :(得分:0)