【问题标题】:Why casting the object is redundant为什么铸造对象是多余的
【发布时间】:2015-10-10 09:34:25
【问题描述】:

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

请解释为什么第一个构造函数中的强制转换是多余的,而第二个构造函数中的强制转换?

更新

both activities extends AppCompatActivity

*代码

public MyExpandableList(Context ctx, ActMain actMain, ArrayList<Group> groupList) {
    this.mCtx = ctx;
    this.mGroupList = groupList;
    this.mBTUtils = new BTUtils(ctx);
    this.mDevDetailsObserver =  (IDeviceDetailsPasser) actMain;//redundant casting, which is not necessary
}

public MyExpandableList(Context ctx, ActConnect actConnect, ArrayList<Group> groupList) {
    this.mCtx = ctx;
    this.mGroupList = groupList;
    this.mBTUtils = new BTUtils(ctx);
    this.mDevDetailsObserver = (IDeviceDetailsPasser) actConnect;//manadory casting

}

//interface
public interface IDeviceDetailsPasser {
public void onDevicedetailsChosen(Header header, Details details, int groupPos);

}

【问题讨论】:

  • 您如何定义ActMainActConnect 类?
  • @Letsamr好像ActMain实现了IDeviceDetailsPasser
  • 提供ActMainActConnect 的定义以及'mDevDetailsObserver'是如何声明的?
  • @MikeM。我想我是从 Rahul Tiwari 的评论中得到的,我的第一个活动实现了 IDeviceDetailsPasser ..我想你也会这么说
  • @LetsamrIt 你明白了。

标签: java android interface


【解决方案1】:

好像ActMain 已经实现了IDeviceDetailsPasser,这就是冗余转换的原因。

【讨论】:

    【解决方案2】:

    我认为在这种情况下,您的actMain 实现了IDeviceDetailsPasser,因此强制转换是多余的,而您的actConnect 没有实现IDeviceDetailsPasser,因此强制转换。

    编辑: 要处理 ClassCastException,请使用 try/catch

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

    【讨论】:

    • “所以强制转换。” 并且可能会以ClassCastException 失败。但谁知道呢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    相关资源
    最近更新 更多