public final class Debug{
public static void println (Object message) {
System.out.println(message.getClass().getName());
}
}
解决方案 »
- 用log4j怎么做spring的aop事务啊
- 下拉列表怎么出不来呀呢?
- 关于等待页面的响应问题
- 用struts的ApplicationResources.properties做的多语言设置的问题
- 求助: 调试.jsp文件时出现这个问题
- 求助!No action instance for path /loginin could be created问题
- resin3 的默认页面如何更改?
- 利用servlet实现jsp页面即时通信
- 一个怪异的问题,请各位大侠帮我解决了??
- 谁有jsp的树形控件的代码?能不能share一下?
- 发现poi包中的问题!
- 200分求救,jreport designer ,server for win2000 and server for unix 的用户名和注册码
但是,已经有部分程序使用了现有的 println (String message)方法。
我不想对所有程序进行替换我的意思是,争取在不修改原有方法的接口上,增加得到类调用的信息。有办法么?
你的这个方法只能输出Object属于哪个类型,String,Integer等
楼主是要求能知道调用Debug 类的println (String message)方法的类是哪个吧?
System.out.println(message.getClass().getName());
}
和
public static void println (String message) {
在这里输出一些信息
}
是两个完全不同的方法啊,可以同时存在于一个类里面啊 dugang106(冷风细雨):
Object.getClass().getName()得到的是类名啊:不信,给你一个例子:=========================
public final class Debug{
public static void println (Object message) {
System.out.println(message.getClass().getName());
}
}
============================
public class TestDebug {
public static void main(String[] args){
Debug d = new Debug();
d.println(new TestDebug());
}
}
输出的是TestDebug
public final class Debug{
public static void println (Object message) {
System.out.println(message.getClass().getName());
} public static void println (String message) {
输出一些信息
}
}
而不能得到调用println函数的classpublic class TestDebug {
public static void main(String[] args){
Debug d = new Debug();
d.println(new Debug());
}
}
//这样输出的就是Debug;而不是楼主要的调用类的TestDebug
哎呀,谢谢大家的参与,可能是我表达不清楚,让大家误会了。
哎呀,谢谢大家的参与,可能是我表达不清楚,让大家误会了。我也知道可以在同一个类里定义两个参数不同的方法,
我也知道可以在同一个类里定义两个参数不同的方法,
我也知道可以在同一个类里定义两个参数不同的方法,但我不想这么做,我是想在
println (String message)
{}
这个方法里输出message的同时,也能输出或记录是哪个类调用了我的debug类,
谢谢大家
import java.io.StringWriter;public final class Debug
{
public static boolean traceCaller = true; //是否输出调用者 private Debug()
{
} public static void println(String message)
{
if(!traceCaller)
{
System.out.println(message);
return;
} String caller = null;
try
{
throw new Exception();
}
catch(Exception e)
{
caller =getCaller(e);
} System.out.println(message + " [" + caller + "]");
} public static String getCaller(Exception e)
{
String trace = formatTrace(e);
int index1 = trace.indexOf("\tat ");
index1 = trace.indexOf("\tat", index1 + 2);
int index2 = trace.indexOf(System.getProperty("line.separator"), index1 + 4);
String result = trace.substring(index1 + 4, index2);
return result;
} public static String formatTrace(Exception e)
{
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
pw.flush();
String trace = sw.toString();
return trace;
}
}example:
public class DebugTest
{
public void method1()
{
method2();
} private method2()
{
Debug.println("test message");
} public static void main(String[] args)
{
DebugTest test = new DebugTest();
test.method1();
}
}
cbhyk()
谢谢
lkenshin(我来帮你up) 等兄弟们的参与