首页 > 代码库 > Java学习笔记-11.运行期间类型鉴定
Java学习笔记-11.运行期间类型鉴定
1.Class对象的getClasses()方法获取的是该类中所有的公共的内部类,以及从父类,父接口继承来的内部类。getinterfaces()方法返回类继承的所有接口。
import javax.print.attribute.standard.PrinterInfo;interface HasBatteries{}interface Waterproof{}interface ShootsThings{}class Toy{ Toy(){} Toy(int i){}}class FancyToy extends Toy implements HasBatteries,Waterproof,ShootsThings{ public FancyToy() { // TODO 自动生成的构造函数存根 super(1); }}public class ToyTest { public static void main(String[] args){ Class class1=null; try{ class1=class1.forName("FancyToy"); }catch (ClassNotFoundException e) { // TODO: handle exception } printInfo(class1); Class[] faces=class1.getInterfaces(); for(int i=0;i<faces.length;i++){ printInfo(faces[i]); } Class cy=class1.getSuperclass(); Object cObject=null; try{ cObject=cy.newInstance(); }catch (Exception e) { // TODO: handle exception } printInfo(cObject.getClass()); } static void printInfo(Class cc){ System.out.println("Class name:"+cc.getName()+" is interface? "+cc.isInterface()); }}
2.Class对象的forName()使用时传递的类名classname参数是需要全名的,不能只加类名,比如包名.类名,java.lang.String。
package eleven;import java.lang.reflect.*;class Pig { public Pig() { // TODO 自动生成的构造函数存根 } public void T() { } public void A() { } public void ma() { }}public class ShowMethods { public static void main(String[] args) { try { //Class class1 = Class.forName("eleven.Pig"); Class class1 = Class.forName("java.lang.String"); Method[] methods = class1.getMethods(); Constructor[] constructors = class1.getConstructors(); for (int i = 0; i < methods.length; i++) { System.out.println(methods[i].toString()); } for (int i = 0; i < constructors.length; i++) { System.out.println(constructors[i].toString()); } } catch (ClassNotFoundException e) { // TODO: handle exception System.out.println("No such class:" + e); } }}
Java学习笔记-11.运行期间类型鉴定
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。