java笔记6-反射与泛型

反射

Class类


class本身是一种数据类型(Type),class/interface的数据类型是Class,JVM为每个加载的class创建唯一的Class实例。
Class实例包含该class的所有信息,通过Class实例获取class信息的方法称为反射(Reflection)
获取一个class的Class实例:

  • Class cls = String.class;

  • Class cls = "str".getClass(); 
  • Class cls = Class.forName("java.lang.String");

注意Class的==比较和instanceof的区别。
从Class实例获取class信息:

  • getName()
  • getSimpleName()
  • getPackage()

从Class实例判断class类型

  • isInterface()
  • isEnum()
  • isArray()
  • isPrimitive()

创建class实例:
cls.newInstance()
JVM总是动态加载class,可以在运行期根据条件控制加载class。

 

访问字段


Field
通过Class实例获取字段field信息:

  • getField(name):获取某个public的field(包括父类)
  • getDeclaredField(name):获取当前类的某个field(不包括父类)
  • getFields():获取所有public的field(包括父类)
  • getDeclaredFields():获取当前类的所有field(不包括父类)

Field对象包含一个field的所有信息:

  • getName()
  • getType()
  • getModifiers()

获取和设置field的值:

  • get(Object obj)
  • set(Object, Object)

通过反射访问Field需要通过SecurityManager设置的规则。
通过设置setAccessible(true)来访问非public字段。

 

调用方法


Method
通过Class实例获取方法Method信息:

  • getMethod(name, Class...):获取某个public的method(包括父类)
  • getDeclaredMethod(name, Class...):获取当前类的某个method(不包括父类)
  • getMethods():获取所有public的method(包括父类)
  • getDeclaredMethods():获取当前类的所有method(不包括父类)

Method对象包含一个method的所有信息:

  • getName()
  • getReturnType()
  • getParameterTypes()
  • getModifiers()

调用Method:

  • Object invoke(Object obj, Object... args)

通过设置setAccessible(true)来访问非public方法。
反射调用Method也遵守多态的规则。

 

调用构造方法


Constructor
调用public无参数构造方法:

  • Class.newInstance()

通过Class实例获取Constructor信息:

  • getConstructor(Class...):获取某个public的Constructor
  • getDeclaredConstructor(Class...):获取某个Constructor
  • getConstructors():获取所有public的Constructor
  • getDeclaredConstructors():获取所有Constructor

通过Constructor实例可以创建一个实例对象:

  • newInstance(Object… parameters)

通过设置setAccessible(true)来访问非public构造方法。

 

获取继承关系


继承关系
获取父类的Class:

  • Class getSuperclass()
  • Object的父类是null
  • interface的父类是null

获取当前类直接实现的interface:

  • Class[] getInterfaces()
  • 不包括间接实现的interface
  • 没有interface的class返回空数组
  • interface返回继承的interface

判断一个向上转型是否成立:

  • bool isAssignableFrom(Class)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
牙科就诊管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线查看数据。管理员管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等功能。牙科就诊管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 管理员在后台主要管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等。 牙医列表页面,此页面提供给管理员的功能有:查看牙医、新增牙医、修改牙医、删除牙医等。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类管理页面显示所有公告类,在此页面既可以让管理员添加新的公告信息类,也能对已有的公告类信息执行编辑更新,失效的公告类信息也能让管理员快速删除。药品管理页面,此页面提供给管理员的功能有:新增药品,修改药品,删除药品。药品类管理页面,此页面提供给管理员的功能有:新增药品类,修改药品类,删除药品类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值