下面的代码首先通过向下转换来访问变量,我想知道如果方法的返回类型返回与我使用的别名相同的别名,是否会有什么不同( ContainerPieceVolumesBinding binding
),或作为方法参数传入的。
我已经测试了代码,它似乎工作得很好,问题是可能有第二个访问点指向同一个变量(第二个访问点是可选的)。
理论上,第二个访问点将使用viewbind别名,而不是我正在使用的向下转换版本。
如果不是返回方法参数抛出的同一个别名,而是返回向下转换的版本,会有什么区别吗?
@SuppressWarnings("unchecked")
@Override
public ViewDataBinding setData(ViewDataBinding viewBind, @NonNull String bindingTag) {
BindingVisitorsBaseAdapter adapter = new BindingVisitorsBaseAdapter(
TAG
);
adapter.setCompletePendingBindings(
pendingBindings
);
//This is the downcasted alias
ContainerPieceVolumesBinding binding = (ContainerPieceVolumesBinding) viewBind;
binding.pieceVolumesContainer.setAdapter(adapter);
observer = new ObjectNotifier(
) {
@Override
public Notifier onNotified() {
return (response, responseType) -> {
switch (responseType) {
case SUBMIT_LIST :
List<BindingVisitor> pieceVolumes = (List<BindingVisitor>) response[0];
((BindingVisitorsBaseAdapter)binding.pieceVolumesContainer.getAdapter()).submitList(pieceVolumes);
break;
case QUANTITY_CHANGE:
onQuantityChanged.onChanged(getValues(binding.pieceVolumesContainer));
break;
}
};
}
};
observer.notifyResponse(SUBMIT_LIST, new ArrayList<>());
// returning the original version here
return viewBind;
}
1条答案
按热度按时间mspsb9vt1#
除非您是通过对象调用引用静态方法,否则向上投射和向下投射不会影响调用的安全性