【发布时间】:2011-09-04 23:44:04
【问题描述】:
我正在编写一个 geom 包作为 Java 库的一部分,它有自己的矢量类:
package mypackage.geom;
public class Vector3D {
public float x;
public float y;
public float z;
public Vector3D(float x, float y, float z) {
this.x = x;
this.y = y;
this.z = z;
}
...
}
我的库有望补充第三方库的功能,该库也实现了矢量类,例如 Vec3D。 Vec3D 类具有与我的 Vector3D 类相同的字段(float x、float y 和 float z)和构造函数签名。我只想在我的库中需要 Vector3D 参数的任何地方使用第三方向量类(例如,假设我有一个具有 setPosition(Vector3D vector3D) 方法的 Camera 类,并且我希望能够传递 @987654331 @ 实例)。
这在 C++ 中是可能的。例如,可以通过以下方式将任何类的通用显式转换器构造函数声明为 Vector3D:
template <class C>
explicit Vector3D(const C& c) : x(c[0]), y(c[1]), z(c[2]) {}
它只需要foreigner类实现operator[]。如果可能的话,我想知道如何在 Java 中实现类似的东西。
【问题讨论】:
-
既然您的库正在扩展这个其他库,您是否有理由不简单地使用
Vec3D类?如果由于某种原因你必须拥有自己的类,定义Vector3D来扩展Vec3D是否可行? -
我应该说“补充”而不是“扩展”。我更新了原文。
标签: java type-conversion