Java判断子类是否继承父类的方法

2016/08/22   
分类:  blog    java   

奇葩的想法,看看子类是否继承父类的某一方法,然后在基类做对应的操作。

对应的问题:当子类重写了方法onSubscribe(Object)后,才会去注册监听器,避免过多无用的引用。

方案:Class的getDeclaredMethod(),判断该类独有的方法。

其实我是做了一个RxBus的分发,在基类中统一注册(仅当子类重写了该方法)、取消订阅。

部分代码如下:

private void initSubscription() {
    // 判断子类是否重写了 onSubscribe() 方法
    Class clazz = getClass();
    while(clazz != BaseActivity.class) {
        try {
            clazz.getDeclaredMethod("onSubscribe", Object.class);
            break;
        } catch (NoSuchMethodException e) {
        }
        clazz = clazz.getSuperclass();
    }
    if (clazz == BaseActivity.class) {
        return;
    }

    mSubscription = RxBus.getInstance().toObservable()
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Action1<Object>() {
                @Override
                public void call(Object o) {
                    onSubscribe(o);
                }
            });
}

/**
 * 主线程操作,请勿做太多业务
 */
protected void onSubscribe(Object o) {
}

本文地址 http://www.0kai.net/blog/2016/08/22/49-child-had-override-fun.html,转载请注明!