Android里面有个异常,叫SuperNotCalledException,如果子类没有通过super.XXX()调用父类的方法,则报此异常。请问如何实现类似的功能,只要能确保调用super.XXX()就行。 

解决方案 »

  1.   

    似乎Java中还真不太容易实现这种控制。构造函数是编译时就控制了,但普通函数并没有此类约束。需要主调程序跟父类方法之间提前做了特殊约定才有可能做到,比如父类方法被调用后置某个标志位;主调函数最后去检查该标志位啥的;但也很难防范子类通过各种手段去掩盖它。
      

  2.   

    你这个需求怎么感觉是编译器做的事啊。你的意思是在子类如果不出现super.xxx()这样的调用父类xxx()就得抛异常了。这个是编译期才能检查的出来的。如果程序已经运行了。是没法知道在是用什么方式调用了父类的xxx()的。