そこで、プログラム クラスの内部に含めることができるクラスを作成し、Thread
特定の変数が変更されるたびに基本的に警告を発するクラスを作成しました。この種の情報を迅速かつ効率的に取得するためのより良いアイデアを誰かが持っているかどうか、もしそうでない場合は、このクラスに関する提案があるかどうか疑問に思っています. 参考までに、alert()
メソッドは基本的に単純な System.out.println() です。
public class OutputState extends Thread{
String className = this.getClass().toString().replace("class ","").replace("$OutputState","");
String[] desc = {"canvasWidth","canvasHeight","relativeCenterX","relativeCenterY","zoom","hAdjust","vAdjust"};
int[] delay = {0,0,99,99,0,0,0,};
Object[] var;
int maxDescLength = 0;
public void init(){
Object[] v = {canvasWidth,canvasHeight,relativeCenterX,relativeCenterY,zoom,hAdjust,vAdjust};
var = v;
}
public void run(){
init();
while(true){
boolean newLine = false;
Object[] v = {canvasWidth,canvasHeight,relativeCenterX,relativeCenterY,zoom,hAdjust,vAdjust};
for(int i = 0; i < var.length; i++){
if(maxDescLength < desc[i].length()){
maxDescLength = desc[i].length();
}
if(!var[i].equals(v[i])){
var[i]=v[i];
String spaces = " ";
int count = desc[i].length()+1;
while(count <= maxDescLength){
spaces += " ";
count++;
}
alert(className + "." + desc[i] + spaces + "= " + var[i]);
newLine = true;
if(delay[i] > 0){try{Thread.sleep(delay[i]);}catch(InterruptedException e){}}
}
}
if(newLine){
alert("------------------------------------");
}
try{Thread.sleep(1);}catch(InterruptedException e){}
}
}
}
基本的な概念は、v
追跡したい変数に設定され、プログラム内の変化する変数で自分自身を更新し続け、最後に知っていたvar
ものを含むことです。変更OutputState
の何かがそれをキャッチし、カスタム メッセージを出力するたびに。多くの人がこのような便利なものを見つけてくれることを知っているので、私がまだ見つけていないより良い方法があると信じています. ご意見をいただければ幸いです。v
var