Java 从方法中获取类名
我想在方法中引用类的名称。在下面的示例中,我希望打印TestSuite。我可以放置Java 从方法中获取类名,java,junit,Java,Junit,我想在方法中引用类的名称。在下面的示例中,我希望打印TestSuite。我可以放置CarsTestSuite.class.getName(),但我想使用该方法获取类名,这样我就不必编辑它了。解决方案将找到方法的类,而不是我自己填充它 public class TestSuite extends TestCase { public static void testOne() { System.out.println(<want TestSuite to be her
CarsTestSuite.class.getName()
,但我想使用该方法获取类名,这样我就不必编辑它了。解决方案将找到方法的类,而不是我自己填充它
public class TestSuite extends TestCase {
public static void testOne() {
System.out.println(<want TestSuite to be here>);
公共类TestSuite扩展了TestCase{
公共静态void testOne(){
System.out.println();
this.getClass().getCanonicalName()
或this.getClass().getName()
您的方法是静态的,因此无法工作。它需要是静态的吗?this.getClass().getCanonicalName()
或this.getClass().getName()
您的方法是静态的,因此无法工作。它需要是静态的吗?在静态方法中不能这样做。在非静态方法中,您可以调用
getClass()
,但在静态方法中,方法的类永远不会更改,因此类(及其名称)也不会更改只能静态访问,在TestSuite.class
中,不能在静态方法中访问。在非静态方法中,可以调用getClass()
,但在静态方法中,方法的类永远不会更改,因此类(及其名称)也不会更改只能静态访问,在TestSuite.class
中,我确实需要它是静态的,因为在另一个类中,我调用该类
TestSuite.testOne()
在另一个类中,它不允许我这样做,除非我将testOne()声明为静态。我确实需要它是静态的,因为在另一个类中我调用该类。如果我这样做 TestSuite.testOne()
在另一个类中,除非我将testOne()声明为静态,否则它不会允许我这样做。您可以使用这样一个事实,即异常的stacktrace包含关于第一个元素中当前类和方法的信息。我在想记录当前类名时使用了这样的构造:
new Exception().getStackTrace()[0].getClassName()
同样,您也可以检索当前方法名(
StackTraceeElement.getMethodName()
)您可以使用这样一个事实,即异常的stacktrace包含关于第一个元素中当前类和方法的信息。我在记录当前类名时使用了这样的构造:
new Exception().getStackTrace()[0].getClassName()
同样,您也可以检索当前方法名(
StackTraceeElement.getMethodName()
)否,它不需要是静态的,上面的示例:this.getClass().getName()有效。谢谢。不,它不需要是静态的,上面的示例:this.getClass().getName()有效。谢谢。