个性化阅读
专注于IT技术分析

Java反射API

Java Reflection是在运行时检查或修改类的运行时行为的过程。

java.lang.Class类提供了许多方法, 可用于获取元数据, 检查和更改类的运行时行为。

java.lang和java.lang.reflect包提供了Java反射的类。

使用地点

Reflection API主要用于:

  • IDE(集成开发环境), 例如Eclipse, MyEclipse, NetBeans等
  • 调试器
  • 测试工具等

你知道吗 ?


java.lang.Class类

java.lang.Class类主要执行两个任务:

  • 提供在运行时获取类的元数据的方法。
  • 提供检查和更改类的运行时行为的方法。


如何获得Class类的对象?

有3种方法获取Class类的实例。它们如下:

  • Class类的forName()方法
  • Object类的getClass()方法
  • .class语法

1)Class类的forName()方法

  • 用于动态加载类。
  • 返回Class类的实例。
  • 如果你知道类的完全限定名称, 则应使用此名称。不能将其用于原始类型。

让我们看一下forName()方法的简单示例。

class Simple{}

class Test{
 public static void main(String args[]){
  Class c=Class.forName("Simple");
  System.out.println(c.getName());
 }
}
Simple

2)Object类的getClass()方法

它返回Class类的实例。如果你知道类型, 则应使用它。而且, 它可以与原语一起使用。

class Simple{}

class Test{
  void printName(Object obj){
  Class c=obj.getClass();  
  System.out.println(c.getName());
  }
  public static void main(String args[]){
   Simple s=new Simple();
 
   Test t=new Test();
   t.printName(s);
 }
}
Simple

3).class语法

如果类型可用但没有实例, 则可以通过在类型名称后附加“ .class”来获得Class。它也可以用于原始数据类型。

class Test{
  public static void main(String args[]){
   Class c = boolean.class; 
   System.out.println(c.getName());

   Class c2 = Test.class; 
   System.out.println(c2.getName());
 }
}
boolean
       Test

确定类对象

以下Class类方法用于确定类对象:

1)public boolean isInterface():确定指定的Class对象是否表示接口类型。
2)public boolean isArray():确定此Class对象是否表示数组类。
3)public boolean isPrimitive():确定指定的Class对象是否表示原始类型。

让我们看一下反射API确定对象类型的简单示例。

class Simple{}
interface My{}

class Test{
 public static void main(String args[]){
  try{
   Class c=Class.forName("Simple");
   System.out.println(c.isInterface());
   
   Class c2=Class.forName("My");
   System.out.println(c2.isInterface());
  
  }catch(Exception e){System.out.println(e);}

 }
}
false
 true

赞(0)
未经允许不得转载:srcmini » Java反射API

评论 抢沙发

评论前必须登录!