所以我创建了一个可以包含在我的程序类中的类,并从一个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
都会捕获它并输出自定义消息。我知道很多人会发现类似的东西很有用,这让我相信可能有更好的方法我还没有找到。我将不胜感激任何意见!