java - 复杂的泛型 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
:
解决方案
推荐阅读
- perl - 如何在 perl 中切换 NVM 环境
- reactjs - 仅使用对象 id 和 lastUpdate 来区分 React 中的 useEffect
- sql - 以下查询之间的语法有什么区别?
- android - Koltin - 创建房间数据库 Android Studio 时没有足够的信息来推断类型变量 t 和注释问题
- python - 如何一起使用 c++ 和 python 并将它们分发到没有安装 python 的系统?
- mysql - 创建存储过程时 MySQL 语法错误
- jestjs - 如何使用 jest 在存储库 typeorm nestjs 中模拟函数
- angular - 在链接的 Angular 应用程序中构建 Angular 库和效果
- java - 应用程序不读取配置服务器 Spring Cloud
- php - 为什么 PHPUnit 需要这么长时间来注册我的代码更改?