黑马程序员----Java反射

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

还是用例子说一下吧:

package com.hzj.text;


import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;


public class Fangshe {


/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str=new String("helloworld");
System.out.println(str.getClass().getName());
//结果为:java.lang.String
Class<?> str1=null;
//在jdk5.0上运行
Class<?> str2=null;
Class<?> str3=null;
str1=new String().getClass();
try {
//采用这种形式比较好
str2=Class.forName("java.lang.String");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
str3=String.class;
System.out.println("类名称:"+str1.getName());
System.out.println("类名称:"+str2.getName());
System.out.println("类名称:"+str3.getName());

/*运行结果
* 类名称:java.lang.String
类名称:java.lang.String
类名称:java.lang.String*/
//通过无参构造方法实例化对象
Tree tree;
Class<?> t=null;

try {
t=Class.forName("com.hzj.text.Tree");
tree=(Tree) t.newInstance();
tree.setAge("120");
tree.setTreeName("樱花树");
System.out.println(tree.toString());
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//运行结果:Tree [age=120, treeName=樱花树]
//通过有参构造方法实例化对象
Tree tree2;
Tree tree3;
Constructor<?>[] constructors = t.getConstructors();
Class<?>[] interfaces = t.getInterfaces();
Class<?> superclass = t.getSuperclass();
try {
//tree2=(Tree) constructors[0].newInstance();
//tree3=(Tree)constructors[1].newInstance("120","木棉树");
//System.out.println(tree2.toString());
//System.out.println(tree3.toString());
//运行结果:Tree [age=null, treeName=null]
//Tree [age=120, treeName=木棉树]
for(int i=0;i<interfaces.length;i++){
System.out.println("实现的接口:"+interfaces[i].getName());
}
//运行结果:实现的接口:com.hzj.text.Plant
System.out.println("继承的父类:"+superclass.getName());
//继承的父类:java.lang.Object
for(int i=0;i<constructors.length;i++){
System.out.println("构造方法:"+constructors[i]);
}
//运行结果
/*构造方法:public com.hzj.text.Tree(java.lang.String,java.lang.String)
构造方法:public com.hzj.text.Tree()*/
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


}

package com.hzj.text;


public class Tree implements Plant{


private String age;
private String treeName;


public Tree() {
super();
}
public Tree(String age, String treeName) {
super();
this.age = age;
this.treeName = treeName;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getTreeName() {
return treeName;
}
public void setTreeName(String treeName) {
this.treeName = treeName;
}
@Override
public String toString() {
return "Tree [age=" + age + ", treeName=" + treeName + "]";
}
public void xx() {
// TODO Auto-generated method stub

}

}

package com.hzj.text;


public interface Plant {
 void xx();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值