java 接口中定义枚举_Java:包含内部枚举的接口;在实现类中扩展功能

我有一个如下界面:

package example;

import java.awt.Point;

public interface Thing {

public enum MovingState {

MOVING_LEFT,

MOVING_UP,

MOVING_RIGHT,

MOVING_DOWN

}

public void setNewPosition(MovingState state);

public Point getPosition();

}

和一个实现类:

package example;

import java.awt.Point;

public class ThingImpl implements Thing {

public enum MovingState {

MOVING_LEFT (-1, 0),

MOVING_UP (0, -1),

MOVING_RIGHT (1, 0),

MOVING_DOWN (0, 1);

private int x_move;

private int y_move;

MovingState(int x, int y) {

x_move = x;

y_move = y;

}

public int xMove() {

return x_move;

}

public int yMove() {

return y_move;

}

}

private Point position;

public void setNewPosition(MovingState state) {

position.translate(state.xMove(), state.yMove());

}

public Point getPosition() {

return position;

}

}

这个想法是让ThingImpl中的MovingState从Thing界面扩展MovingState(从而将MoveState的实际实现与界面分开).

这不起作用 – ThingImpl中的MovingState枚举会影响接口中的定义,而不是扩展它,然后编译器抱怨ThingImpl不是抽象的,并且不会覆盖Thing中的抽象方法setNewPosition(Thing.MovingState).

有没有实际的方法来做我想要实现的?还是Java根本没有这种能力?


版权声明:本文为weixin_32737183原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。