package myLibrary; /** * 2,3次元座標を管理するクラス * * @author s.iwatani * @param <T> 数値型 */ public class Position<T extends Number> implements Cloneable { public T x, y, z; public Position() { x = null; y = null; z = null; } /** * コンストラクタ * * @author s.iwatani * @param x x座標 * @param y y座標 */ public Position(T x, T y) { this.x = x; this.y = y; z = null; } /** * コンストラクタ * * @author s.iwatani * @param x x座標 * @param y y座標 * @param z z座標 */ public Position(T x, T y, T z) { this.x = x; this.y = y; this.z = z; } /** * 2つのPositionを入れ替える * * @author s.iwatani * @param t position */ // TODO: 動作確認 public void swap(Position<T> t){ Position<T> tmp = this.clone(); x = t.x; y = t.y; z = t.z; t = tmp; } /** * clone * * @author s.iwatani * @return 新しいPosition */ // TODO: 動作確認 @SuppressWarnings("unchecked") @Override public Position<T> clone(){ Position<T> p = new Position<T>(); try { p = (Position<T>)super.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return p; } }