[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends] Re: [jfriends] Re: ポインタと参照
>なんとなく、下のようにやりたくなってしまったわたし(笑)。
>
> public void swap(MyInteger a, MyInteger b) {
> MyInteger tmp = new MyInteger(a.get());
> a.set(b.get());
> b.set(tmp.get());
> }
>
>少しは汎用性があるのかな、と。
コピーコンストラクターも書いてみました。
public class MyInteger {
private int value;
public MyInteger(MyInteger original) { value = original.get(); }
public MyInteger(int initialvalue) { value = initialvalue; }
public void set(int newvalue) { vaule = newvalue; }
public int get() { return value; }
public void swap(MyInteger a, MyInteger b) {
MyInteger tmp = new MyInteger(a);
a.set(b.get());
b.set(tmp.get());
}
}
># MyInteger を Object に変えてみたり…無駄?(笑).
それはこういうinterfaceを書いて、
public interface IIntegerAccessor {
public void set(IIntegerAccessor newvalue);
public IIntegerAccessor get();
}
こうですか?
public void swap(Object a, Object b) {
if (a instanceof IIntegerAccessor && b instanceof IIntegerAccessor) {
IIntegerAccessor ia = (IIntegerAccessor)a;
IIntegerAccessor ib = (IIntegerAccessor)b;
int tmp = ia.get(); // ここがかっこ悪いかな?
ia.set(ib.get());
ib.set(tmp);
} else {
// なにかを throw してもいいかな
}
}
------------------------------------------------------------------
遠藤靖之 (えんどう やすゆき) <yasuyuki@xxxxxxxxxx>
http://www.freepage.total.co.jp/jfriends/ (Java互助会ホームページ)
株式会社タイムインターメディア 情報通信サービス部 TEL 03-5362-9009
〒162-0065 新宿区住吉町3-11 新宿スパイアビル FAX 03-5362-9008