private String getFunctionName()
{
StackTraceElement[] sts = Thread.currentThread().getStackTrace();
if (sts == null)
{
return null;
}
for (StackTraceElement st : sts)
{
if (st.isNativeMethod())
{
continue;
}
if (st.getClassName().equals(Thread.class.getName()))
{
continue;
}
if (st.getClassName().equals(this.getClass().getName()))
{
continue;
}
tag = st.getClassName();
return "[ "+ st.getFileName() + ":" + st.getLineNumber() + " "
+ st.getMethodName() + " ]";
}
return null;
}
代码中的Thread.class.getName()看不懂,1、.class是代表什么意思?查官方文档都没有看到这个属性。2、getName()明明是非静态函数,为什么没有实例化也可以直接调用?3、顺便帮我解释一下if (st.getClassName().equals(this.getClass().getName()))这句代码是什么意思?很疑惑,求解。先谢了java class 基础 非静态java基础非静态class
解决方案 »
- ajax爬虫
- java企业内部邮件系统的编写
- java socket客户端发送SQL语句到服务器端,服务器端怎么样将查询到的resultset再发送给客户端,客户端应该怎么样接受客户端?
- 编程实现监控web应用程序,有人知道怎么弄吗?
- 关于JAVA调用外部程序
- java程序连接Access数据库~~谁告诉我一个纯java的驱动程序~~来实现~~
- SOS,jxl产生execl文件后打开保存页面的问题?
- 很奇怪 我用JB9运行.class时可以连接ORacle9数据库,但是用浏览器运行时却不能连...
- 我是初学者,请教各位大虾:JCreatorPro的环境变量如何设置?
- 准备学习java的第一个问题:怎么样发布java入门的第一个程序hello ???
- 一个JAVA程序中引用的问题
- java插件开发 结合Jni 异常报错A fatal error has been detected by the Java Runtime Environme
public static void main(String[] args) {
//第一个,class就是代表这个类,比如本例中就代表B这个类而已。
Class<B> b= B.class;
//所以调用的是class类中的方法getName(),注意b是class这个类的类对象,而不是B的对象。
String name = b.getName();
}}
class B{
}
返回包含当前堆栈跟踪元素表示的执行点的类的完全限定名称。就是获取st的类名吧,,
this.getClass().getName()
获取当前类的类名。。判断是否值是否相等
貌似这几句只是本类的是Thead类的名字不用输出而已。。
log是很多信息吧,sts一步一步的都记录下来,我想只是这两个条件下不用输出吧?
至于你的第二个问题,我怕我说不清楚,你看这里吧。
http://blog.csdn.net/llhhyy1989/article/details/7244123