2015-11-05 43 views
-1

一个例子:在Android中,通常当你试图重载一个Activity超类的方法时,你必须有@Override注解,它是强制的。他们如何做到这一点?如何使@Override为子类强制?

我想强加严格我subclss压倒一切的方法使用@覆盖。父母课上需要做什么改变才能实施?

我想执行注释(不只是重写基本方法)。

+0

我不认为你可以用代码做到这一点 - 有可能是一些在你的IDE(例如Netbeans的显示一个警告,如果注释丢失),或者你可以大概用一种风格分析工具,例如CheckStyle的或FindBugs的有一个规则来检查该注释。 – assylias

+1

我认为你问的是强制执行注解,但答案认为你试图强制人们重写你的基本方法。因此,这个问题显然不清楚。请澄清。 –

+0

这在Android中不是强制性的。唯一可能发生的事情是Android Studio会抱怨说您没有添加该注释。 – zapl

回答

2

你可以用代码质量CI期间检查工具做到这一点,但你可能要建立自己的(这是中等复杂程度的任务),或添加功能到现有的代码质量棋子之一。那么如果注释不在那里,那么你只是简单地失败了构建。

+0

听起来完全可行。我接受+1。感谢您的时间。 – ikis

-1

你不需要@Override批注,我做的插件,“极品他们”没有它。

+0

不理解这个问题。重写并不是强制性的,确实如此,但我想强制执行重写的严格使用。 – ikis

-1

如果要强制替代,这意味着,该方法的父类的实现将隐藏肯定。所以它不会在任何情况下被调用,除非从重写的方法本身。

这意味着,你可以(与class一起)申报方法abstract

abstract class Foo { 
    public abstract void overrideMe(); 
} 
+0

我不认为你理解这个问题。 –

+0

我认为你没有足够好地解释你的问题。如果问题是“我如何在子类上强制执行@Override注解”,这对我来说似乎只是一个XY问题。你为什么想这么做? – Jack

-1

没有办法强迫任何人替代。如果你制作课程或方法abstract,那么是的,覆盖是强制性的。但是,你不提供你的实现,你希望你的子类和/或不幸的维护无人机遵循并基于它们派生自己的覆盖。如果这个类不是抽象的,没有人被强制覆盖任何东西,并且可以尽可能多地使用你的原始方法。

而且@override注释始终是可选的,你是否会抵消抽象或具体方法。所有注释都是可选的,因为它们是元数据,仅对人有用,编译器完全忽略它们,就像注释和空格一样。