JAVA 获取class对象 类名.class Class.forName()两种方法什么情况下使用 为什么?

Python018

JAVA 获取class对象 类名.class Class.forName()两种方法什么情况下使用 为什么?,第1张

Class.forName()是根据类名称加载类 比如有一个类名为com.abc.AAA 此处Class.forName(‘com.abc.AAA ’).newInstance()就会创建一个AAA对象而.class一般用来获取类的通用属性 比如AAA.class.getDeclareMethod()是获取AAA类的所有声明的方法 主要用于反射机制

在java方法中获得当前方法的名称方法:

一、获得当前类名:

Java代码

this.getClass().getName()

二、获得当前方法名臣:

JDK1.4

Java代码

new   Exception().getStackTrace()[i].getMethodName()//其中i   =   0就是当前的类的方法名字 i   ==   1就是调用者的方法

JDK1.5之后可用

Java代码

Thread.currentThread().getStackTrace()[1].getMethodName()//具体使用数组的那个元素和JVM的实现有关,我在SUN JDK6下面测试的是第二个元素,具体说明可以查看Thread.getStackTrace方法的javadoc

不创建实例?这个要求太奇怪了。也许只有jvm知道吧。能问一下为什么要这么做?

或者你可以用这个trick:

public class Test{

public static void main(String[] args) {

try {

System.out.println(args[100000])

} catch (Exception e) {

System.out.println(e.getStackTrace()[0].toString().split("\\.main\\(")[0])

}

}

}