Java返回一个Object

Rag*_*aer 3 java return object

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

Object label1 = addLabel("First number");
Run Code Online (Sandbox Code Playgroud)

还有我的addLabel功能

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

     return label;
}
Run Code Online (Sandbox Code Playgroud)

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

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

Hov*_*els 6

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

可能的解决方案:

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