反射

import java.lang.reflect.Method;
import java.util.Arrays;
//反射(动态的)
public class Dome1 {
public static void main(String[] args) throws Exception {
//1.需要得到类的全路径名[全路径名=包路径+类名]
String string=“day3.Student”;//限定名
//2.通过Class。forName()生成了Student类的字节码文件对象
Class<?> studentClass = Class.forName(string);//?:数据类型不确定
//3.可以调用Class newInstance //studentConstuctor就是== Student stu=new Student();
Object studentConstuctor = studentClass.newInstance();
//4.反射获取类里面[成员方法] [本类+父类所有的public修饰的方法Method对象!]
/* //–》生成类里面的方法
//studentClass(字节码对象)
Method[] methods = studentClass.getMethods();//获取父类的
for (Method method : methods) {
System.out.println(method);
}/
Method[] methods = studentClass.getDeclaredMethods();//–》暴力反射
/

* 暴力反射:
* 获取的是[本类 所有的方法Method对象! 包括私有]
/
for (Method method : methods) {
if (“defalutMethod”.equals(method.getName())) {
//打印名字
System.out.println(method.getName());
//打印权限修饰符-----Modifier(解码)
System.out.println(method.getModifiers());
//返回值类型
System.out.println(method.getReturnType());
//参数列表
System.out.println(Arrays.toString(method.getParameterTypes()));
//调用方法 (method–对象)
method.invoke(studentConstuctor,“郭靖”);
/

* 不定长参数:
* add(int a,int…sss){}
* 1.如果你没有想要传进去的值,那么可以不写
* 2.自动封装成一个数组
* 3.
*/
}

	}
}

}
class Student {
public String name;
protected int age;
int leg;
private String sex;

//构造方法
public Student() {
	
}
protected Student(String name){
	this.name=name;
}
Student(int leg,String sex){
	this.sex = sex;
	this.leg = leg;
}
private Student(String name, int age, String sex) {
	
	this.name = name;
	this.age = age;
	this.sex = sex;
}
//普通方法
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public int getAge() {
	return age;
}
public void setAge(int age) {
	this.age = age;
}
public int getLeg() {
	return leg;
}
public void setLeg(int leg) {
	this.leg = leg;
}
public String getSex() {
	return sex;
}
public void setSex(String sex) {
	this.sex = sex;
}
public void publicMethod(){
	System.out.println("公共方法被调用了");
}
protected void protectedMethod(String str){
	System.out.println(str);
	System.out.println("受保护的方法被调用了。。");
}
void defalutMethod(String name){
	
	System.out.println("默认的方法被调用了。。"+name);
}
@SuppressWarnings("unused")
private void privateMethod(String name,int age,String bb){
	System.out.println(name);
	System.out.println("私有的方法被调用了...");
}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值