我正在寫一個GEOM產品包的都有自己的向量類的Java庫的一部分:如何轉換java中的「類似」3D矢量類?
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
參數(例如,假設我有一個Camera
類,它有一個setPosition(Vector3D vector3D)
方法,並且我希望能夠將Vec3D
實例傳遞給它)。
這在C++中是可能的。例如,人們可以從任何類的Vector3D聲明一個通用的明確的變流器的構造,以下列方式:
template <class C>
explicit Vector3D(const C& c) : x(c[0]), y(c[1]), z(c[2]) {}
一切,它需要的是,外國人類實現operator[]
。如果可能的話,我想知道如何在Java中實現類似的東西。
由於您的庫擴展這個其他圖書館,在那裏你不能簡單地用'Vec3D一個理由'班?如果由於某種原因你必須有自己的類,定義'Vector3D'來擴展'Vec3D'是否可行? –
我應該說「補充」而不是「延長」。我更新了原文。 – nakednous