Проблемы с Android @Override - PullRequest
       7

Проблемы с Android @Override

2 голосов
/ 24 января 2012

Я использовал Java 1.7 для своего приложения Libgdx, однако обнаружил, что получаю много ошибок "@Override".Поэтому после поиска в Интернете я обнаружил, что должен работать с совместимостью с Java 1.6, чтобы предотвратить эту ошибку.После перехода в окно-> предпочтения-> java-> компилятор и изменения совместимости до 1.6 я обнаружил, что все еще получаю ошибки @Override (метод ... должен переопределить метод суперкласса).

Любая идея, почему это все еще происходит?Мне действительно нужно указывать «@Override» для функции, которая должна быть переопределена и выполнена в соответствии с графиком интерфейса / мастер-класса?

Вот код, если это помогает:

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

    }
}

Ответы [ 2 ]

3 голосов
/ 24 января 2012

@Override аннотация - это просто механизм безопасности.Это просто подсказка для компилятора, который предназначен для переопределения родительского метода.Если метод не является переопределением родительского метода, запускается ошибка компилятора.

Использование его optional, но может быть полезно для обнаружения опечаток имени метода / параметра.

2 голосов
/ 24 января 2012

Нужно ли мне указывать "@Override" для функции, которая должна переопределять

Нет, это необязательно, и должно генерироваться предупреждение.

С другой стороныКроме того, API Android заставляет вас (и генерирует ошибку времени выполнения) вызывать super для определенных методов.см. здесь Активность Android, при которой переопределенные функции должны вызывать super. *

...