今天学习Spring3框架,在理解模拟实现Spring Ioc容器的时候遇到了getInterfaces()方法。getInterfaces()方法和Java的反射机制有关。它能够获得这个对象所实现的接口。

例如:

Class<?> string01 = person.getClass().getInterfaces()[0];

//获得person对象所实现的第一个接口

详细的例子如下:

Person类:

  1. package com.deciphering.spring;
  2. public class Person implements eagle,whale{
  3. private String name = "小明";
  4. private int id = 10001;
  5. public void Speak(String name){
  6. System.out.println("我的名字"+name+" "+ "编号"+ id);
  7. }
  8. @Override
  9. public void fly() {
  10. System.out.println("I can Fly!!!");
  11. }
  12. @Override
  13. public void swim() {
  14. System.out.println("I can swimming!!!");
  15. }
  16. public static void main(String args[]){
  17. Person person = new Person();
  18. person.Speak("小明");
  19. person.fly();
  20. person.swim();
  21. System.out.println("---------------");
  22. Class<?> string01 = person.getClass().getInterfaces()[0];
  23. Class<Person> string02 = (Class<Person>) person.getClass().getInterfaces()[1];
  24. System.out.println(string01);
  25. System.out.println(string02);
  26. }
  27. }
package com.deciphering.spring;

public class Person implements eagle,whale{

private String name = "小明";

private int id = 10001;

public void Speak(String name){

System.out.println("我的名字"+name+" "+ "编号"+ id);

}

@Override

public void fly() {

System.out.println("I can Fly!!!");

}
@Override
public void swim() {
System.out.println("I can swimming!!!");
}
public static void main(String args[]){
Person person = new Person();
person.Speak("小明");
person.fly();
person.swim();
System.out.println("---------------");
Class&lt;?&gt; string01 = person.getClass().getInterfaces()[0];
Class&lt;Person&gt; string02 = (Class&lt;Person&gt;) person.getClass().getInterfaces()[1];
System.out.println(string01);
System.out.println(string02);
}

}

eagle接口:

  1. package com.deciphering.spring;
  2. public interface eagle {
  3. public void fly();
  4. }
package com.deciphering.spring;

public interface eagle {

public void fly();

}

whale接口:

  1. package com.deciphering.spring;
  2. public interface whale {
  3. public void swim();
  4. }
package com.deciphering.spring;

public interface whale {

public void swim();

}

运行结果:

Java反射之getInterfaces()方法的更多相关文章

  1. 提高java反射速度的方法method.setAccessible(true)

    转载:http://huoyanyanyi10.iteye.com/blog/1317614 提高java反射速度的方法method.setAccessible(true) package com.c ...

  2. 乐字节Java反射之三:方法、数组、类加载器和类的生命周期

    本文承接上一篇:乐字节Java发射之二:实例化对象.接口与父类.修饰符和属性 继续讲述Java反射之三:方法.数组.类加载器 一.方法 获取所有方法(包括父类或接口),使用Method即可. publ ...

  3. Java 反射获取私有方法

    通常我们创建一个类时,它的私有方法在类外是不可见的,但是可以通过反射机制来获取调用.具体的反射机制的介绍大家自己百度. 所以反射可能会破坏我们的单例模式,当然解决方案也是有的,就是做个标记记录次数,第 ...

  4. [Java反射基础三]方法反射的基本操作

    本文接上文“获取类的信息”,利用反射(invoke)来获取一个类中的方法来执行. 1.定义一个类,包含三个名称相同,参数不同的方法 class A{ public void print(){ Syst ...

  5. 利用java反射动态调用方法,生成grid数据

    项目中需要java后台查询并组装前台grid的数据,数据行数不定,数据行定义不定,开始用了最原始的方法,写了几百行,就是前台需要什么字段后台拼接什么字段,java代码冗余量非常大,并且不够灵活,一旦前 ...

  6. java反射调用私有方法和修改私有属性

    //调用私有方法package com.java.test; public class PrivateMethod { private String sayHello(String name) { r ...

  7. Java 反射调用动态方法

    package com.pigetest.util; import java.lang.reflect.Method; public class PrivateMethodTestHelper { p ...

  8. 利用java反射机制对方法进行调用

    http://blog.csdn.net/coolcoffee168/article/details/5835143

  9. Java反射机制的学习

    Java反射机制是Java语言被视为准动态语言的关键性质.Java反射机制的核心就是允许在运行时通过Java Reflection APIs来取得已知名字的class类的相关信息,动态地生成此类,并调 ...

随机推荐

  1. v2.0版本小程序开发心得(代码之外)

    总结一些代码之外的事情: 做优先该做的事情 分清主次,一天只有24小时,人的精力也是有限的,而且经常性的是,在某个时间爆发性的产生了大量的问题.这些问题集中的产生,需要一个一个的解决,但是人的精力是有 ...

  2. 使用 swoole_process 实现 PHP 进程池

    swoole_process 主要是用来代替 PHP 的 pcntl 扩展.我们知道 pcntl 是用来进行多进程编程的,而 pcntl 只提供了 fork 这样原始的接口,容易使用错误,并且没有提供 ...

  3. 洛谷 P1294 高手去散步

    P1294 高手去散步 题目背景 高手最近谈恋爱了.不过是单相思.“即使是单相思,也是完整的爱情”,高手从未放弃对它的追求.今天,这个阳光明媚的早晨,太阳从西边缓缓升起.于是它找到高手,希望在晨读开始 ...

  4. 一 梳理 从 HDFS 到 MR。

      MapReduce 不仅仅是一个工具,更是一个框架.我们必须拿问题解决方案去适配框架的 map 和 reduce 过程   很多情况下,需要关注 MapReduce 作业所需要的系统资源,尤其是集 ...

  5. hdu 1024 最大m子段和

    注:摘的老师写的 最大m子段和问题 以-1 4 -2 3 -2 3为例最大子段和是:6最大2子段和是:4+(3-2+3)=8所以,最大子段和和最大m子段和不一样,不能用比如先求一个最大子段和,从序列中 ...

  6. vue27-2.0-自定义键盘事件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. .Net中字典的使用

    /// <summary> /// 获取用户市信息 /// </summary> /// <param name="CustomerId">&l ...

  8. ECharts简单入门

    图1和图2是手机上显示的效果, 图3是电脑浏览器显示的效果. 如何使用ECharts? 1.下载echarts.js 2.引入echarts.js <script type="text ...

  9. mysql python中的pymysql模块使用

    import pymysql # 在这之前需要给mysql授登录权限 grant all on "; 否则会导致连接时出错 # flush privileges; #创建连接 conn = ...

  10. c#时间差高精度检查

    两个时间差的高精度检查 static void Main(string[] args) { Console.WriteLine("开始时间:" + DateTime.Now.ToS ...