Java:是否可以将一个Object数组从一个类返回到另一个类

时间:2018-03-31 06:21:11

标签: java

我有一个名为 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

我有以下问题:

  1. = new Value(new Object[Value.x]);是否实际创建了一个大小为x的对象数组并将其屏蔽为值?
  2. 此外,Value.ARRAY实际上是否返回大小为x的对象数组?
  3. 为什么val.length返回0?
  4. 困惑?是的我也是:(

    另外,如果你想知道为什么我这样做,我的一个课程中有一个项目要求我们创建自己的编译器/解释器。我试图实现数组。我使用antlr4帮助我(因此其中一个片段中的ctx.ID()。getText())

    任何帮助将不胜感激。如果你对我应该如何实现这一点有更好的了解,我可以接受建议。或者,如果你知道在antlr4中实现数组的任何链接,那也是很棒的。谢谢!

1 个答案:

答案 0 :(得分:0)

  1. 否。它创建了一个Value实例。如果您定义了一个构造函数,将Object数组作为参数并将该参数赋给成员,则此实例可能包含Object数组。
  2. 否。它返回Value
  3. 的实例
  4. 不可能说。您的代码没有解释如何定义或分配成员“值”。