java反射执行方法有哪些?java反射调用方法

XIAO 2020-06-11 14:26:01 java常见问答 6281

反射机制作为java语言不可或缺的重要组成部分之一,其强大的作用也是我们不能忽视的,那么你是否清楚java反射执行的方法有哪些?即java反射会调用哪些方法呢?

首先我们来了解一下Class类,作为反射的源头,同时也是对整个类的描述,具有相应类一切的信息。

我们知道,在Java中有一切皆对象的思想,然而对象都是由类产生的,也就是说Java里面有各种各样的类,但是这些类都是同一种类,即Class类。

区分一下: class是关键字,定义类的时候使用的,而Class是类名;

一个类被类加载器加载到内存里头占用了一片存储空间,那么这个空间中的内容就称为类的字节码,而且不同的类的字节码是不同的,所以他们在内存里面的内容是不同的,而各个字节码都是可以用不同的Class类对象来表示的。

比如说:Date date = new Date();

当我们使用到Date类的时候,类加载器会把Date类加载到内存中了,是以字节码的形式存在的。Date.getClass();就是得到属于Date的那份字节码了,最后会返回Date类。要知道每个类里面都是包含的属性是类的名字的,类的访问属性,类所属的包名等等。所以当我们打印Date.getClass()的时候,打印出的就是Date的访问属性和Date的所属包名。

Class类的三种实例化方式如下所示:

一.对象.getClass();//取得Class对象;

二.类名.class;//可以直接根据某个具体类来取得其Class对象;

三.调用Class类的静态方法Class.forName(String className);传入类的全名称来取得其Class对象。

比如:Class clas = Class.forName(“java.util.Date”);

反射与类的操作如下所示:

取得类的包名称时:public Package getPackage();

取得父类的Class对象时:public native ClassgetSuperclass();

取得实现的父接口时:public Class[] getInterfaces();

Class cls = Watermelon.class;
System.out.println(cls.getPackage()
    .getName()); //包名
System.out.println(cls.getSuperclass()
    .getName()); //父类名
Class[] str = cls.getInterfaces();
for (Class str1: str)
{
    System.out.printf(str1.getName()); //父接口名
}

为了取得类中指定参数类型的构造,方法如下所示:

public Constructor getConstructor(Class… parameterTypes) throws 
NoSuchMethodException, SecurityException
//只能取得类中public权限的构造方法
public Constructor getDeclaredConstructor(Class… parameterTypes)
//可以取得类中全部构造方法,包含私有构造
//取得类中所有构造方法
public Constructor[] getConstructors() throws SecurityException
//只能取得类中public权限的构造方法
public Constructor[] getDeclaredConstructors() throws 
SecurityException

可以取得类中全部构造方法,包含私有构造

好了,以上就是本篇文章的所有内容了,还想了解更多java入门信息,记得多多关注本站消息获取哦。

推荐阅读:

java反射执行方法 java反射调用方法

java反射原理是什么?java反射机制原理详解

什么是java反射?java反射机制详解