Java基础之反射应用(如何获取对象的构造方法、属性以及、基本方法)

反射实战:新建Student类,利用反射原理输出Student的构造方法,属性,普通方法,参数列表等等信息。

反射资料:查询java_API之:java.lang.reflect包下。

Student类:

package com.briup.ch24;
public class Student
{
	private String name;
	private int age;
	public Student(){
	
	}
	public Student(String name,int age){
	 this.name=name;
	 this.age=age;
	}
	public void setName(String name){
	 this.name=name;
	}
	public String getName(){
	 return name;
	}
	public void setAge(int age){
	 this.age=age;
	}
	public int getAge(){
	 return age;
	}
        public static void test(){
          System.out.println("hello test");
        }
}

ReflectTest类:

package com.briup.ch24;

import java.lang.reflect.*;

public class ReflectTest
{
  public static void main(String... args) throws Exception{
     //1.获取类镜像
	 Class clz=Class.forName("com.briup.ch24.Student");
	 //2.获取该类中所有的属性
	  Field[] f=clz.getDeclaredFields();
	  for(Field temp:f){
	        //获取属性的数据类型
		Class c=temp.getType();
		//获取属性的名字
		String name=temp.getName();
		//获取属性修饰符
		int m=temp.getModifiers();
		System.out.println("属性:"+c+" 名字:"+name+" 修饰符:"+m);
	  }
	  //3.获取该类中方法
	  Method[] method=clz.getDeclaredMethods();
	  for(Method temp:method){
	        //获取方法名
		String name=temp.getName();
		//获取返回值类型
		Class r=temp.getReturnType();
		//获取方法的修饰符
                int m=temp.getModifiers();
		//获取参数列表类型
                Class[] c=temp.getParameterTypes();
                String str="";
		 for(Class t:c){
		  str = str + " " + t;
		 }
		System.out.println("方法名:"+name+" 返回类型:"+r+" 修饰符:"+m+" 参数列表:"+str);
	  }
	  //4.获取所有构造器
	  Constructor[] cst= clz.getDeclaredConstructors();
	  for(Constructor cstt:cst){
	   //获取构造器名字
	   String name=cstt.getName();
	   //获取构造器的修饰符
	   int m=cstt.getModifiers();
	   //获取构造器的参数列表
           Class[] c=cstt.getParameterTypes();
           String str="";
	   for(Class t:c){
		  str =  str + " " + t;
	   }
	   System.out.println("构造器名字:"+name+" 构造器修饰符:"+ m +" 参数列表:"+str);
	  }
  }
}

运行结果:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Java 中,可以使用以下几种方法获得对象的控制权: 1. synchronized 关键字:可以使用 synchronized 关键字来保证同一时间只有一个线程访问该对象。 2. java.util.concurrent 包中的 Lock 接口:可以使用 Lock 接口中的 lock() 和 unlock() 方法来获得和释放对象的控制权。 3. wait() 和 notify() / notifyAll() 方法:可以使用 wait() 方法来释放对象的控制权,并使当前线程等待;使用 notify() 或 notifyAll() 方法可以唤醒正在等待该对象的线程。 这些方法通常与 Java 中的多线程相关,在不同的场景中使用不同的方法来获得对象的控制权,以保证多线程访问对象的正确性。 ### 回答2: 在Java中,可以通过以下方法获得对象的控制权: 1. 构造方法(Constructor):在创建对象时,通过调用对象构造方法可以初始化对象属性和状态。 2. 类的普通方法(普通方法):可以通过调用对象的普通方法来执行对象的特定操作,并且可以修改对象属性和状态。 3. 类的静态方法(静态方法):通过调用类的静态方法可以执行一些与对象无关的操作,例如工具类中的方法,不需要实例化对象即可调用。 4. 访问器方法(Getter):通过定义访问器方法(也称为getter方法)可以获取对象中的属性值。 5. 修改器方法(Setter):通过定义修改器方法(也称为setter方法)可以修改对象中的属性值。 6. 对象引用(Object Reference):如果将一个对象赋值给另一个对象的引用变量,那么该引用变量将指向同一个对象,可以通过该引用变量来操作对象。 7. 垃圾回收(Garbage Collection):Java中的垃圾回收机制会自动回收没有被引用的对象,因此可以通过及时释放对象的引用来放弃对对象的控制权。 需要注意的是,Java中的控制权是通过对象引用的方式来控制的,而不是直接控制对象本身。 ### 回答3: 在Java中,可以使用以下几种方法获得对象的控制权: 1. 构造方法:在创建类的实例时,通过调用该类的构造方法来初始化对象的状态。构造方法具有特殊的性质,它们在对象创建过程中被自动调用,并且只能在创建对象时被调用一次。 2. 静态工厂方法:静态工厂方法是一个静态方法,它返回该类的一个实例。相比于构造方法,它具有更大的灵活性,可以自定义返回的对象实例。通过静态工厂方法,可以实现对象的控制权转移到指定的方法中。 3. 克隆方法:Clone()是Object类中的一个方法,在实现了Cloneable接口的类中可以被重写。通过调用克隆方法,可以创建一个与原始对象完全相同的副本对象。克隆方法可以在某些场景下获取对象的控制权。 4. 反射反射Java的一种机制,可以在运行时动态地获取对象的信息(类名、属性方法等),并对其进行操作。通过反射,可以实现获取对象的控制权,例如创建对象、调用方法等。 总的来说,以上是一些常用的方法来获得Java对象的控制权。不同方法有着各自的特点和应用场景,开发者可以根据实际情况选择适合的方法获取对象的控制权。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值