`
aindf0128
  • 浏览: 45855 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java反射机制(二)例子

阅读更多

下面我以顾客买相机为例来说明Java反射机制的应用。例子中涉及的类和接口有:
Camera接口:定义了takePhoto()方法。
Camera01类:一种照相机的类型,实现Camera接口。
Camera02类:另一种照相机的类型,实现Camera接口。
Seller类:卖照相机。
Customer类:买相机,有main方法。
所有类都放在com包里
  程序如下:

public interface Camera {
    //声明照相机必须可以拍照
 public void takePhoto();
}
public class Camera01 implements Camera {
 private final int prefixs =300;//300万象素
 private final double optionZoom=3.5; //3.5倍变焦
 public void takePhoto() {
  System.out.println("Camera01 has taken a photo");
 }
}
类似的有
public class Camera02 implements Camera {
 private final int prefixs =400;
 private final double optionZoom=5; 
 public void takePhoto() {
  System.out.println("Camera02 has taken a photo");
 }
}
顾客出场了
public class Customer {
 public static void main(String[] args){
  //找到一个售货员 
  Seller seller = new Seller();
  //向售货员询问两种相机的信息
  seller.getDescription("com.Camera01");
  seller.getDescription("com.Camera02");
  //觉得Camera02比较好,叫售货员拿来看
  Camera camera =(Camera)seller.getCamera("com.Camera02");
  //让售货员拍张照试一下
  seller.testFuction(camera, "takePhoto");
 }
}
Seller类通过Java反射机制实现
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class Seller {
 //向顾客描述商品信息
 public void getDescription(String type){
  try {
   Class cla = Class.forName(type);
   //生成一个实例对象,在编译时我们并不知道obj是什么类型。
   Object obj = cla.newInstance();
   //获得type类型所有已定义类变量及方法。
   Field[] fileds = cla.getDeclaredFields();
   Method[]methods = cla.getDeclaredMethods();
   System.out.println("The arguments of this Camera is:");
   for(int i=0;i<fileds.length;i++){
    fileds[i].setAccessible(true);
    //输出类变量的定义及obj实例中对应的值
    System.out.println(fileds[i]+":"+fileds[i].get(obj));
   }
   System.out.println("The function of this Camera:");
   for(int i=0;i<methods.length;i++){
    //输出类中方法的定义
    System.out.println(methods[i]);
   }
   System.out.println();
  } catch (Exception e) {
   System.out.println("Sorry , no such type");
  }
 } 
 //使用商品的某个功能
 public void testFuction(Object obj,String function){
  try {
   Class cla = obj.getClass();
   //获得cla类中定义的无参方法。
   Method m = cla.getMethod(function, null);
   //调用obj中名为function的无参方法。
   m.invoke(obj, null);
  } catch (Exception e) { 
   System.out.println("Sorry , no such function");
   
  } 
 }
 //拿商品给顾客
 public Object getCamera(String type){
  try {
   Class cla = Class.forName(type);
   Object obj = cla.newInstance();
   return obj;
  } catch (Exception e) { 
   System.out.println("Sorry , no such type");
   return null;
  } 
 }
}

 程序到此结束,下一篇我将对程序进行分析,并补充一些内容。

分享到:
评论

相关推荐

    JAVA反射机制及应用例子

    JAVA反射机制及应用例子.。。Reflection API

    java 反射机制例子

    #### 二、Java反射机制概述 在Java中,反射机制是一种非常重要的特性,它使得程序能够在运行时动态地获取类的内部信息,如类名、构造器、成员变量和方法等,并且能够直接操作这些内部结构。通过这种方式,Java反射...

    java反射机制实现例子

    下面是一个简单的Java反射机制的实现例子: ```java import java.lang.reflect.Field; public class ReflectionExample { private String privateField = "默认值"; public static void main(String[] args) ...

    java反射机制小例子

    下面我们将深入探讨这个小例子以及Java反射机制的相关知识点。 首先,`Class.forName()`方法在例子中被用来动态加载类。`Class.forName(String className)`接收一个类的全名(包括包名),然后返回对应的`Class`...

    一个例子让你了解Java反射机制

    Java反射机制是Java编程语言中的一个重要特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制的核心类集中在java.lang.reflect包下,包括Class、Constructor、Method和...

    反射实例-JAVA反射机制

    ### 反射实例—JAVA反射机制 #### 一、反射概念及原理 反射在计算机科学领域,特别是程序设计中,是指程序有能力访问、检测和修改其自身的结构和行为。这一概念最早由Smith于1982年提出,并迅速应用于各种编程语言...

    Java 反射机制 代码的实例

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象等的内部结构。通过反射,开发者可以动态地获取类的信息并调用其方法,创建对象,访问私有成员,甚至改变类的行为。在深入...

    Java反射简单例子

    下面我们将详细探讨Java反射的基本概念、使用场景以及如何通过`ReflectTest.java`这个简单的例子来理解反射。 ### 1. 反射的基本概念 反射机制允许我们在运行时检查类的信息,包括类名、方法名、参数类型等,并且...

    java反射机制应用

    #### 二、Java反射机制的应用场景及示例 ##### 1. 判断一个类是否是某个类的实例或子类 ```java Class&lt;?&gt; cls = Class.forName("com.example.Jdk"); boolean isInstance = cls.isInstance(new Jdk()); System.out....

    利用java反射机制的建议计算器源码

    通过这个例子,新手可以学习到如何使用Java反射机制来增强代码的动态性,以及如何设计可扩展的系统。反射在很多场景下都很有用,例如在插件系统、序列化、动态代理等领域都有广泛应用。然而,需要注意的是,反射也...

    JAVA反射机制的简单理解

    Java反射机制是Java语言提供的一种强大工具,它允许在程序运行时动态地获取类的信息以及对类的对象进行操作。在Java中,静态编译时类型检查确保了代码的稳定性,但有时我们需要在运行时根据需求动态地创建对象、调用...

    java反射机制详解

    ### Java反射机制详解 #### 一、反射机制是什么 反射机制是Java编程语言的一个核心特性,它允许程序在运行时动态地获取类的信息,并且能够动态地创建对象和调用对象的方法。简单来说,反射机制使得Java程序可以...

    java反射机制例子

    标题"java反射机制例子"暗示我们将探讨如何在实际应用中使用Java反射。以下是一些关键知识点: 1. **Class对象**:每个类在Java中都有一个对应的Class对象,可以通过`Class.forName("类全名")`获取。Class对象包含...

    Java中的反射机制

    Java反射机制允许运行中的程序检查自身,并能直接操作程序的内部属性。这是其他许多编程语言(如Pascal、C或C++)不具备的能力。 **1.1 Reflection的工作机制** 为了展示反射如何工作,我们来看一个简单的例子: ...

    java例子 java反射

    Java反射是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。...通过分析这些例子,你可以更深入地理解Java反射的使用方式及其在实际开发中的应用。

    java反射机制以及试验例子

    有大量的实验例子和反射的各种方法说明,有大量的实验例子和反射的各种方法说明。

    java 反射机制

    ### Java反射机制深入理解 #### 一、反射机制概述 Java反射机制是一种强大的工具,它允许程序在运行时检查和操作任何类、方法、构造函数和字段等元素。这种能力对于构建灵活的应用程序和框架非常有用,特别是那些...

    Java反射机制总结(实例分析)

    Java反射机制是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并进行操作。通过反射,开发者可以在程序执行时发现并访问类的字段(fields)、方法(methods)以及构造器(constructors),...

    JAVA反射机制详解

    这个例子展示了Java反射机制在分布式计算中的应用,说明了反射在实现远程方法调用方面的重要性。 总的来说,Java反射机制为Java程序提供了高度的灵活性和动态性,在需要动态创建类实例、访问或修改对象属性以及调用...

    Java反射机制说明

    Java反射机制是Java编程语言的核心特性之一,它赋予了程序在运行时检查和操作对象的能力。反射机制使得Java代码能够动态地获取类的信息(如类名、方法、字段),并且能够在运行时创建和调用对象的方法,这为编程带来...

Global site tag (gtag.js) - Google Analytics