两种不同的参数类型(将对象转换为类型)

时间:2015-06-12 12:58:38

标签: java android object button imagebutton

我想调用一个方法,但参数可以是Button或ImageButton。我用不同的参数类型作为对象调用该方法两次。

在我的方法attributesOfButton中,我想分配相应的按钮类型,如下面的代码所示。

private void memCheck()
{
    ImageButton imageButtonCam;
    Button buttonCamCo;

    attributesOfButton(imageButtonCam);
    attributesOfButton(buttonCamCo);
}

private void attributesOfButton(Object button) 
{
    Object currentButton;

    if (button instanceof ImageButton) 
    {
        currentButton = (ImageButton) button;
    } 

    if (button instanceof Button ) 
    {
        currentButton = (Button) button;
    } 

    // do something with button like:
    if (Provider.getValue == 1) {
        currentButton.setEnabled(true);
    }
}

但它不起作用。如果我这样做:

currentButton.setEnabled(true);

我得到了

  

无法解析方法setEnabled(boolean)

1 个答案:

答案 0 :(得分:2)

您的对象currentButton仍然定义为Object,因此即使您知道它是子类,也不能使用除Object之外的其他任何方法。您需要使用正确的类定义对象:

private void attributesOfButton(Object button) 
{
    if (button instanceof ImageButton) 
    {
        ImageButton currentButton = (ImageButton) button;
        // do stuff for ImageButton
    } 

    if (button instanceof Button ) 
    {
        Button currentButton = (Button) button;
        // do stuff for Button
    } 
}