4 java static-methods classname
可能重复:
从Java中的静态方法获取类名
当你在静态方法中时,是否有办法获取类名(包含名称的字符串)而不键入类名本身?
例如,打字MyClass.class.getName()不仅仅是有用的"Myclass".
Chi*_*Chi 14
您可以使用匿名内部类:
class Test {
public static void main(String[] args) {
String className = new Object(){}.getClass().getEnclosingClass().getName();
System.out.println(className);
}
}
Run Code Online (Sandbox Code Playgroud)
ban*_*ity 11
您可以通过创建(不抛出)新的Exception并检查其堆栈跟踪来实现.你的类将是第0个元素,因为它是异常的起源.它有点不对劲,但它会起作用.
System.out.println( new Exception().getStackTrace()[0].getClassName() );
Run Code Online (Sandbox Code Playgroud)
您可以对Thread类执行相同的操作.这对我来说似乎更干净,但线条稍长.你的类现在是stacktrace中的第一个元素而不是第0个元素.Thread.getStackTrace()是第0个.
System.out.println( Thread.currentThread().getStackTrace()[1].getClassName() );
Run Code Online (Sandbox Code Playgroud)
例如,键入MyClass.class.getName()并不比"Myclass"更有用.
相反,如果使用IDE的重构函数重命名MyClass,它将使用RenamedClass.class.getName()替换MyClass.class.getName().如果你在那里放一个字符串,你将不得不手动完成.
| 归档时间: |
|
| 查看次数: |
8079 次 |
| 最近记录: |