東川印記

一本東川,笑看爭龍斗虎;寰茫兦者,度橫佰昧人生。

Kotlin坑01,无法通过子类调用父类静态变量或方法

2020年8月25日星期二




项目中常见的这种情况。。。。


1)父类定义了一些跨项目通用的变量或方法
public class TestParent extends CoreContext {

    public static final String KEY_LOGOUT = "logout";

    public static Context getContext() {
        return ctx;
    }
}
2)之前的操作,java子类可以继承,然后定制单项目或模块内容
class TestChild extends TestParent{
    
}


3)然后第三个类出现了,他可以通过子类直接调用父类的方法和变量
class Thild {
    public void test(){
        Logger.w(TestChild.KEY_LOGOUT);     //通过子类调用父类变量

        Logger.w(TestChild.getContext());   //通过子类调用父类方法
    }
}


但是,kotlin不行。。。。
找了一遭,截止目前,找到的兼容方案。。。。
1)子类定义同名方法或变量,然后指向父类
class TestChild : TestParent() {

    companion object {
        val KEY_LOGOUT = TestParent.KEY_LOGOUT

        fun getContext(): Context {
            return TestParent.getContext()
        }
    }
}
2)三方调用的是子类的,但实际指针最终指向父类。。。。
class Thrid {
    fun test() {
        Logger.w(TestChild.KEY_LOGOUT)
        Logger.w(TestChild.getContext())
    }
}


这么做,如果只是少的话还行,但是 如果稍微大点的项目,怎么可能这么做,不现实。。。。


看来 一定时间内还是得 保持java跟kotlin混编啊。。。。



--
senRsl
2020年08月25日20:16:56

没有评论 :

发表评论