我有以下类和接口:
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
的类,以及一个使用Bezier样条线对Curve
进行特殊实现的类。我希望对此进行通用编码,以便编写:
Curve<Path<Vector2>> curve = null;
curve = new BezierCurve(/* */);
curve = new CachedCurve(curve);
libGDX
中的相关类别: