为什么投射对象是多余的

时间:2015-10-10 09:34:26

标签: java android interface

我有两个可扩展列表的构造函数,如下所示,我也有一个接口如下所示。现在我想使用相同的expandlist适配器 两个不同的活动,这就是我创建两个构造函数的原因。但问题是初始化构造函数时,正如您在第一个构造函数中看到的那样 将接口对象初始化为构造函数中的第二个参数,我收到“冗余强制转换”,而在第二个构造函数中,必须初始化 接口对象为应该实现该接口的活动的第二个参数

请解释为什么第一个构造函数中的构图是第二个构造函数中的元素,而它是第二个元素中的元素?

更新

CategoryViewController *popoverTableViewController = [[CategoryViewController alloc] init];
    popoverTableViewController.delegate = self;

UITableViewCell *cell = [categoryTableView cellForRowAtIndexPath:indexPath];
    NSString *cellText = cell.textLabel.text;
    [self.delegate didSelectRow:cellText];
    [[self navigationController] popViewControllerAnimated:YES];

*代码

both activities extends AppCompatActivity

}

2 个答案:

答案 0 :(得分:2)

似乎ActMain已经实现IDeviceDetailsPasser,这就是多余投射的原因。

答案 1 :(得分:1)

我认为在这种情况下,您的actMain实施IDeviceDetailsPasser,因此投放是多余的,而您的actConnect未实施IDeviceDetailsPasser,因此必须投射。

修改: 要处理ClassCastException,请使用try/catch

    try {
        mDevDetailsObserver = (IDeviceDetailsPasser) activity;
    } catch (ClassCastException e) {
        throw new ClassCastException(activity.toString()
                + " must implement IDeviceDetailsPasser");
    }