本文目录一览:
- 1、java 父类如何在运行期动态获取子类类名
- 2、java 怎么样得到实体类的名字
- 3、利用java反射机制,通过一个对象获得完整的包名和类名
- 4、Java如何得到类名
- 5、java怎么获取src目录下所有的包名,类名,方法名 以及通过一个类名获得该类下的所有方法名
- 6、java 如何通过对象获取对象类全名?
java 父类如何在运行期动态获取子类类名
给你写了3个类:
A类:
package cn.test;
public class A {
public void test(){
System.out.println(this.getClass());
System.out.println(this.getClass().getSimpleName());
System.out.println(this.getClass().getName());
}
}
B类:
package cn.test;
public class B extends A{
}
Test类:
package cn.test;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
B b = new B();
b.test();
}
}
结果:
class cn.test.B
B
cn.test.B
你要知道,在继承关系中,不管父类还是子类,这些类里面的this都代表了最终new出来时的那个类型的实例对象,所以在父类中你可以中this获取到子类的信息!
不止一层继承关系时,你可以根据下面:
A类:
package cn.test;
public class A {
public void test(){
System.out.println(this.getClass());
System.out.println(this.getClass().getSimpleName());
System.out.println(this.getClass().getName());
System.out.println(this.getClass().getSuperclass());
System.out.println(this.getClass().getSuperclass().getSimpleName());
System.out.println(this.getClass().getSuperclass().getName());
}
}
B类:
package cn.test;
public class B extends A{
B(){
// System.out.println("B......");
}
}
C类:
package cn.test;
public class C extends B{
C(){
// System.out.println("C...........");
}
}
Test类:
package cn.test;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
C c = new C();
c.test();
}
}
结果:
class cn.test.C
C
cn.test.C
class cn.test.B
B
cn.test.B
java 怎么样得到实体类的名字
//用反射
Class cl = Class.forName(str);//加载类
// 获取类名
String lm = cl.getSimpleName();
利用java反射机制,通过一个对象获得完整的包名和类名
1、Test t = new Test().Class clazz = t.getClass().System.out.println(clazz.getCanonicalName()).System.out.println(clazz.getSimpleName()).
2、public class TestReflect {public static void main(String[] args) throws Exception {TestReflect testReflect = new TestReflect().System.out.println(testReflect.getClass().getName()).// 结果 net.xsoftlab.baike.TestReflect.}}
3、Java程序
Java如何得到类名
用反射.
比如说现在有一个Test类的引用t.
Class c=t.getClass();
类名为c.getName();
结果中包括包的名.如果不想要包的名,自己处理下
Class类在java.lang包
java怎么获取src目录下所有的包名,类名,方法名 以及通过一个类名获得该类下的所有方法名
可以使用以下代码来获取src目录下所有的包名,类名,方法名 以及通过一个类名获得该类下的所有方法名。
import java.io.File;
import java.lang.reflect.Method;
public class LoopApp {
public static void main(String[] args) throws Exception {
String packageName = "";
File root = new File(System.getProperty("user.dir") + "\\src");
loop(root, packageName);
}
public static void loop(File folder, String packageName) throws Exception {
File[] files = folder.listFiles();
for (int fileIndex = 0; fileIndex files.length; fileIndex++) {
File file = files[fileIndex];
if (file.isDirectory()) {
loop(file, packageName + file.getName() + ".");
} else {
listMethodNames(file.getName(), packageName);
}
}
}
public static void listMethodNames(String filename, String packageName) {
try {
String name = filename.substring(0, filename.length() - 5);
Object obj = Class.forName(packageName + name);
Method[] methods = obj.getClass().getDeclaredMethods();
System.out.println(filename);
for (int i = 0; i methods.length; i++) {
System.out.println("\t" + methods[i].getName());
}
} catch (Exception e) {
System.out.println("exception = " + e.getLocalizedMessage());
}
}
}
java 如何通过对象获取对象类全名?
java是不支持在运行中进行强制转化的! 如果事先知道类型,可以通过强制转化实现! 如果不知道! 可以采用这种方式!
String className = obj.getClass().getName(); 得到类名
然后:
A a = (A)Class.forName(className).newInstance();
//上面这句话的意思是,forName(className):静态加载className这个类;
// .newInstance(),实例化一个对象
// A 代表你知道的这人类或者这个类的父类, 把强制转化成你所要的对象。
这和你
A a = new A();
是一样的效果!