首页 > 解决方案 > 复杂的泛型 java 接口和类

问题描述

我有以下类和接口:

public interface Curve<T extends Path<Vector2>> {
    List<T> splines();
}

public final class CachedCurve implements Curve<Path<Vector2>> {
    public CachedCurve(final Curve<Path<Vector2>> source) {
        // ...
    }    
    @Override
    public List<Path<Vector2>> splines() {
       // ...
    }
}

public class BezierCurve implements Curve<Bezier<Vector2>> {
    public BezierCurve(List<Vector2> sample, float tresholdPerpDistance) {
        // ...
    }
    @Override
    public List<Bezier<Vector2>> splines() {
        // ...
    }
}

我像这样使用上面的:

Curve<Path<Vector2>> curve = null;
curve = new BezierCurve(new LinkedList<Vector2>(), 10f);  // Compilation error
curve = new CachedCurve(curve);

我似乎无法修复此编译错误:

Type mismatch: cannot convert from BezierCurve to Curve<Path<Vector2>>

也许不清楚我想从(显然不正确的)代码中做什么。我想要一个通用接口Curve。然后我想要一个可以缓存任何类的类,Curve以及一个Curve使用 Bezier 样条的特殊实现的类。我希望对此进行通用编码,以便我可以编写:

Curve<Path<Vector2>> curve = null;
curve = new BezierCurve(/* */);
curve = new CachedCurve(curve);

相关课程来自libGDX

标签: javagenericslibgdx

解决方案


推荐阅读