使用Java @Override注释的最佳实践是什么?为什么?
使用@Override注释标记每个重写方法似乎有点过分.是否有某些编程情况需要使用@Override和其他不应该使用的@Override?
例如,在Java中,@Override注释不仅提供了覆盖的编译时检查,而且还提供了出色的自我记录代码.
我只是在寻找文件(尽管如果它是一些像pylint这样的检查器的指示器,那就是奖金).我可以在某处添加注释或docstring,但是在Python中指示覆盖的惯用方法是什么?
我正在尝试In app billing在我的Andorid应用程序中实现服务.
我已将IMarketBillingService.aidl文件添加到Eclipse中的项目中.然后Eclipse自动生成了该IMarketBillingService.java文件,但有很多错误.
@Override public android.os.IBinder asBinder() { return mRemote; }
- implements android.os.IInterface.asBinder
- The method asBinder() of type IMarketBillingService.Stub.Proxy must override asuperclass method
@Override public android.os.Bundle sendBillingRequest(android.os.Bundle bundle) throws android.os.RemoteException
{
android.os.Parcel _data = android.os.Parcel.obtain();
android.os.Parcel _reply = android.os.Parcel.obtain();
android.os.Bundle _result;
......
}
- The method sendBillingRequest(Bundle) of type IMarketBillingService.Stub.Proxy must override a superclass method
- implements com.android.vending.billing.IMarketBillingService.sendBillingRequest
Run Code Online (Sandbox Code Playgroud)
谁能帮我这个?
我正在使用Mac,Eclipse Juno和最新版本的Android SDK.
假设我有一个Foo实现接口的类,如MouseListener.该MouseListener接口由五个方法组成,但我只希望覆盖其中一个(mouseClicked()).是否有一种标准的,惯用的格式化其他方法的方法?
我倾向于写下以下内容:
@Override
public void mouseClicked(MouseEvent e) {
// (...) <-- actual code here
}
@Override
public void mouseEntered(MouseEvent e) {
// Do nothing. Exists to satisfy MouseListener interface.
}
@Override
public void mouseExited(MouseEvent e) {
// Do nothing. Exists to satisfy MouseListener interface.
}
@Override
public void mousePressed(MouseEvent e) {
// Do nothing. Exists to satisfy MouseListener interface.
}
@Override
public void mouseReleased(MouseEvent e) {
// Do nothing. Exists to satisfy …Run Code Online (Sandbox Code Playgroud) 在使用JDK1.6.0_10的Eclipse 3.4.1中,如何@Override在实现接口方法的方法上对缺少的注释激活警告?
在"首选项"窗口中,此选项:
Java>编译器>错误/警告>注释>缺少'@Override'注释
适用于覆盖超类方法的方法上缺少注释,但它对接口方法没有任何作用.
可能重复:
java中有什么"@Override"?
从Java 1.5开始,这个注释被合并到用于覆盖超类方法的方法的语言中.
现在,将使用此注释的方法更改为不使用此注释的方法?这只是惯例吗?
显然,假设两者都是从超类中覆盖方法的方法......
我正在检查 Servlet API,我注意到 GenericServlet 是一个实现 javax.servlet.Servet 接口的抽象类。我想知道为什么 GenericServlet 类的作者声明了一个抽象方法“service(ServletRequest req, ServletResponse res)”,如果这个方法已经在接口 javax.servlet.Servlet 中声明了。任何的想法?
如果我实现接口的方法,我应该放置@Override标记吗?我知道当你覆盖超类(不是接口)的方法时@Override标签应该存在.但是如何实现接口的方法呢?
我检查了这个问题,但它似乎没有回答我的问题,这个问题要少得多.我从主进程中的菜单项调用IntentService.它目前只是一个在onHandleIntent()中放置Toast的骨架,最终应该在处理结束时短暂出现以说它已经完成.但是它永远保留在屏幕上(即使应用程序停止时).我用模拟器和我的Galaxy S2测试了相同的结果.有人能指出我正确的方向吗?
这是服务代码:
package com.enborne.spine;
import android.app.IntentService;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;
public class SaveFile extends IntentService {
private final String TAG = "SaveFile";
public SaveFile() {
super("SaveFile");
}
@Override
public void onCreate() {
super.onCreate();
Log.d(TAG, "Service Started.. ");
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "Service Destroyed.. ");
}
@Override
protected void onHandleIntent(Intent intent) {
// TODO Auto-generated method stub
Log.d(TAG, "HandleIntent");
// File saved
Toast.makeText(this, "File has been saved", Toast.LENGTH_SHORT).show();
}
}
Run Code Online (Sandbox Code Playgroud)
(onCreate和onDestroy覆盖仅暂时用于登录Eclipse,因此我可以看到正在发生的事情.)
我从一个活动的菜单中调用它(乱搞上下文只是因为服务没有启动 …
当扩展抽象类时,我理解为什么你必须重写一些方法。但当涉及到接口时,我不明白为什么必须这样做。如果一个接口的所有方法都必须实现,那么重写它们有什么用呢?
我正在谈论@Override注释。
java ×6
overriding ×4
annotations ×3
android ×2
interface ×2
eclipse ×1
eclipse-3.4 ×1
idioms ×1
inheritance ×1
jakarta-ee ×1
java-8 ×1
jdk1.6 ×1
oop ×1
python ×1
servlets ×1
toast ×1