这是一个Android项目,但问题与JAVA本身有关。
我试图覆盖Activity
中的方法,但我希望此方法根据以下两个条件运行不同的代码:如果用户已登录且用户的类型是什么。
我覆盖的方法是每次用户触摸屏幕时至少调用一次的dispatchTouchEvent
。
我可以把条件放在方法中但是如前所述,这是一个被调用的方法,所以我试图避免在其上反复做一些额外的逻辑。
理想情况下,我想要这样的事情:
if (isUserLogged) {
if (user.getType == 'A') {
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (//condition based on ev)
return super.dispatchTouchEvent(ev);
else
return true;
}
}
else {
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (//different condition based on ev)
return super.dispatchTouchEvent(ev);
else
return true;
}
}
}
当然这是不可能的。
有关如何避免将所有代码放入方法中的任何提示?
答案 0 :(得分:3)
您可以创建共享dispatchTouchEvent
方法的接口的不同实现。看看Strategy Pattern。
答案 1 :(得分:1)
虽然我确定你知道这是不可能的,但类似的东西是可能的,很有可能你想要什么。也许只需在IEnumerable<bool>
方法中使用if / switch,然后调用适当的方法。
示例强>
function y=classify(x)
[a b]=size(x);
%check for empty matrix
% Do not forget that an empty matrix can be size a x 0 or 0x a, where a can be
% arbitrary number
if (a>0)&&(b==0)||(a==0)&&(b>0)||(a==0)&&(b==0)
y=(-1);
%check for scalar
elseif (a==1)&&(b==1)
y=0;
%check for vector
elseif (a>=1)&&(b==1)||(a==1)&&(b>=1)
y=1;
%other case
else
y=2;
end