静态方法不与特定实例关联,不能引用this,要得到当前类名,没有直接的办法。
通过查资料和试验,可以用下面几种方式:
public static void testGetClassName()
{
// 方法1:通过SecurityManager的保护方法getClassContext()
String clazzName = new SecurityManager()
{ public String getClassName()
{
return getClassContext()[1]getName();
}
}getClassName();
Systemoutprintln(clazzName);
// 方法2:通过Throwable的方法getStackTrace()
String clazzName2 = new Throwable()getStackTrace()[1]getClassName();
Systemoutprintln(clazzName2);
// 方法3:通过分析匿名类名称()
String clazzName3 = new Object() {
public String getClassName()
{
String clazzName = thisgetClass()getName();
return clazzNamesubstring(0, clazzNamelastIndexOf('$'));
}
}getClassName();
Systemoutprintln(clazzName3);
}
分别调用10万次,
方法1:219ms
方法2:953ms
方法3:31ms
静态方法method(),只能把属性也要设置成static的,才能访问到你的属性
但是你的目的:在方法体内部想获取当前所属类的类型信息
建议你可以这样:举个小例子
class
demo
{
private
int
num;
public
demo(){}
public
int
getNum()
{
return
thisnum;
}//这个方法就很轻松的获取你的属性的信息;
}
o(∩_∩)o希望你明白
这是不可能的,static方法不隶属于任何类/对象,所以无从获取。static的内容由JVM统一管理,甚至都不在堆上
看了你的补充说明。如果是想知道本静态方法在哪个类被实现真的不可行,你的程序设计有错误。如果你是想读取工作目录下的一个文件,你只能知道改工作目录的磁盘路径,而文件名(类名)必须手工写明,无法自动获取。
以上就是关于java如何获取内部静态类变量全部的内容,包括:java如何获取内部静态类变量、Java静态方法获取所属类的信息、Java代码中,如何在静态(由static关键字修饰)方法或静态代码块中(static{})获取当前类的位置。。。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)