技術情報
やっちゃたよ俺様JavaVM
ある日、非常に控えめのOS上で動くプログラムをC++で作って欲しいと頼まれました。C++はいろいろと面倒なのであまりできれば使いたくありません。そこで、だめもとで交渉したところ「リアルタイム性が保証できるんだったらJavaでもいいですよ」ということだったので、俺様JavaVM(Virtual Machine)を作ることにしました。そういう訳で、たまに俺様JavaVMの状況を報告します。
ある日、非常に控えめのOS上で動くプログラムをC++で作って欲しいと頼まれました。C++はいろいろと面倒なのであまりできれば使いたくありません。そこで、だめもとで交渉したところ「リアルタイム性が保証できるんだったらJavaでもいいですよ」ということだったので、俺様JavaVM(Virtual Machine)を作ることにしました。そういう訳で、たまに俺様JavaVMの状況を報告します。
最近、久しぶりにC言語を使った。
数百個くらいある良く似た関数を宣言するのに、C++言語のテンプレートを使ってはいけないという状況に遭遇したのでマクロで挑んでみた。
そのときに使った技を紹介する。
前回のプログラムは改良したとは言え、まだまだ突っ込みどころ満載です。そういう訳なので、今回も更に指摘して行きます。
今回はaCollectionの要素を順に取り出す処理の実現方法に注目します。前回のプログラムの何が良くないのか分かりますか?
import java.util.Iterator;
import java.util.Collection;
public class CollectionUtility
{
public static String toString(Collection aCollection)
{
Object tBuffer;
String tString = "";
Iterator tIterator = aCollection.iterator();
for(int i = 0; i < aCollection.size(); i++)
{
if(i == 0)
{
tBuffer = tIterator.next();
tString += tBuffer;
}
else
{
tBuffer = tIterator.next();
tString += ", " + tBuffer;
}
}
return tString;
}
}