【发布时间】: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);
}
【问题讨论】:
-
您如何定义
ActMain和ActConnect类? -
@Letsamr好像
ActMain实现了IDeviceDetailsPasser -
提供
ActMain和ActConnect的定义以及'mDevDetailsObserver'是如何声明的? -
@MikeM。我想我是从 Rahul Tiwari 的评论中得到的,我的第一个活动实现了 IDeviceDetailsPasser ..我想你也会这么说
-
@LetsamrIt 你明白了。