Java返回一个Object

时间:2014-04-14 02:02:08

标签: java object return

我正在学习Java,我现在面临以下错误

Object label1 = addLabel("First number");

我的addLabel函数

public Object addLabel(String text)
{
     JLabel label = new JLabel(text);
     add(label);

     return label;
}

我想知道为什么我不能在我的变量label1上访问任何标签方法,如果我将它作为对象返回?

例如:label1.setBounds(...);

3 个答案:

答案 0 :(得分:6)

您只能访问变量可用的方法,而Object没有这些方法。这就是为什么你不应该以这种方式使用Object。是的,变量保存的对象是JLabel,但编译器知道变量可以包含任何类型的对象,因此为了安全起见,只允许对象方法调用。

可能的解决方案:

  • 你可以施放:((JLabel) label1).setText("Foo");
  • 或者更好地将label1声明为JLabel变量并声明addLabel以返回JLabel。

答案 1 :(得分:4)

由于您已删除了该类型,因此需要返回JLabel才能将其用作JLabel -

public JLabel addLabel(String text)
{
  JLabel label = new JLabel(text);
  add(label);

  return label;
}

然后

JLabel label1 = addLabel("First number");

答案 2 :(得分:0)

内存中存在的对象类型与您拥有的引用类型之间存在差异。

在这种情况下,你的内存中的对象是一个JLabel,但是你的引用是一个Object - 所以使用这个引用的代码只能看到Object中可用的方法。

如果您选择将对象作为JLabel返回并将引用存储为JLabel,则后续代码可以访问JLabel中的方法。