首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android @Override问题

Android @Override问题
EN

Stack Overflow用户
提问于 2012-01-24 23:32:36
回答 2查看 963关注 0票数 2

我在我的Libgdx应用程序中使用Java1.7,但是我发现我收到了很多"@Override“错误。所以在网上搜索后,我发现我应该与Java 1.6兼容来防止这个错误。在进入window->preferences->java->compiler并将compatibility更改为1.6之后,我发现仍然收到@Override错误(该方法...必须重写超类方法)。

你知道为什么这种事还会发生吗?我真的需要为一个函数指定"@ override“才能覆盖并按计划由Interface/Masterclass执行吗??

下面是代码,如果有帮助的话:

代码语言:javascript
复制
package cowdawg.libgdx.namespace;

import java.io.IOException;
import java.io.InputStream;

import javax.microedition.khronos.opengles.GL10;

import com.badlogic.gdx.InputProcessor;
import com.badlogic.gdx.files.*;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.graphics.GL11;
import com.badlogic.gdx.graphics.Mesh;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.PerspectiveCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.Texture.TextureFilter;
import com.badlogic.gdx.graphics.Texture.TextureWrap;
import com.badlogic.gdx.graphics.g3d.loaders.obj.ObjLoader;

public class LifeCycle implements ApplicationListener {

    String head;
    Mesh model;
    private PerspectiveCamera camera;

    @Override
    public void create() {
        //super.onCreate(savedInstanceState);
        //setContentView(R.layout.main);

        InputStream stream = null;
        try 
        {
            stream = Gdx.files.internal("Head/Head.obj").read();
            model = ObjLoader.loadObj(stream,true);
            stream.close();
        } 
        catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        Gdx.gl.glEnable(GL10.GL_DEPTH_TEST);
        Gdx.gl10.glTranslatef(0.0f, 0.0f, -3.0f);

        //Mesh m;
        //InputStream in = Gdx.files.internal("data/cube.obj").read();
        //m = ObjLoader.loadObj(in);
        //m.render(GL10.GL_TRIANGLES);
    }

    @Override
    public void dispose(){
    }

    @Override
    public void pause(){
    }

    protected int lastTouchX;
    protected int lastTouchY;
    protected float rotateZ = 0.01f;
    protected float increment = 0.01f;

    @Override
    public void render()
    {
        Gdx.gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
        Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
        camera.update();
        camera.apply(Gdx.gl10);
        Gdx.gl10.glTranslatef(0.0f, 0.0f, -3.0f);
        Gdx.gl10.glRotatef(rotateZ, rotateZ, 5.0f, rotateZ);
        model.render(GL10.GL_TRIANGLES);

        if (Gdx.input.justTouched())
        {
        }
        else if (Gdx.input.isTouched())
        {
        }
        rotateZ += increment;
        System.out.println(""+rotateZ);
    }

    @Override
    public void resize()
    {

    }

    @Override
    public void resume()
    {

    }

    @Override
    public void resize(int arg0, int arg1) {
        // TODO Auto-generated method stub

    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-24 23:44:57

@Override注释只是一种安全机制。这只是对编译器的一个提示,该方法旨在重写父方法。如果该方法不是父方法的重写,则会触发编译器错误。

使用它是optional,但对于检测方法名称/参数输入错误可能很有用。

票数 3
EN

Stack Overflow用户

发布于 2012-01-24 23:58:47

我真的需要为要覆盖的函数指定"@ override“吗

不,它是可选的,它应该生成一个警告。

另一方面,Androids API会强制您(并生成一个运行时错误)为某些方法调用超级函数。查看此处Android Activity which overridden functions must call super.*

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8989470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档