关闭

java的反射机制

标签: java
282人阅读 评论(0) 收藏 举报
分类:

一直不太明白java的反射机制,今天稍微看了下,写了一个例子:

public static void main(String[] args) {
		try {
			Class clazz = Class.forName("cn.com.mysite.sink.ScalaSink");
			Field[] fields = clazz.getDeclaredFields();    
            for(int i = 0; i < fields.length; i++) {    
            	 // 权限修饰符

                int mo = fields[i].getModifiers();

                String priv = Modifier.toString(mo);

                // 属性类型

                Class<?> type = fields[i].getType();

                System.out.println(priv + " " + type.getName() + " "

                        + fields[i].getName() + ";");
            }    
            System.out.println();
            System.out.println("Public fields: ");    
            fields = clazz.getFields();    
            for(int i = 0; i < fields.length; i++) {    
                int mo = fields[i].getModifiers();

                String priv = Modifier.toString(mo);

                // 属性类型

                Class<?> type = fields[i].getType();

                System.out.println(priv + " " + type.getName() + " "

                        + fields[i].getName() + ";");
            }  
            
            
            Method method=clazz.getDeclaredMethod("isEmpty",String.class);
            method.setAccessible(true);
            Object o = method.invoke((cn.com.mysite.sink.ScalaSink)clazz.newInstance(),"");
            System.out.println(o);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

打印结果:

private static final org.slf4j.Logger logger;
public static final java.lang.String TOPIC_HDR;
private java.lang.String isWhite;
private java.util.Properties kafkaProps;
private java.lang.String topic;
private int batchSize;
private java.lang.String hostname;
private java.lang.String uripath;
private java.lang.String field;
private java.lang.String dataSource;
private [Ljava.lang.String; f;
private java.util.List messageList;
private org.apache.flume.sink.SinkCounter counter;
private com.ibm.tivoli.unity.common.rest.RestClient restClient;
private com.ibm.tivoli.unity.common.rest.RequestResult result;
private java.text.SimpleDateFormat df;
private java.text.SimpleDateFormat format;
private java.util.Map map;
private com.ibm.json.java.JSONObject batch;
private java.lang.StringBuilder sb;
private com.ibm.json.java.JSONObject job;
private static java.security.MessageDigest digest;
private java.util.concurrent.ExecutorService threadPool;
private long bytes;
private int _count;
private java.io.File timeFile;
private long lastSendTime;
private long sendTimeInterval;
private boolean isWrite;
private java.io.FileWriter writer;
private boolean countFlowEnable;

Public fields: 
public static final java.lang.String TOPIC_HDR;
true

class里面有几个方法:getDeclaredFields();getFields();   getDeclaredMethod();getMethod();

取值不太一样,getFields()与getMethod()只能取修饰符为public的属性跟方法,而其他两个则可以取到任意的属性和方法。



0
0
查看评论

深入理解java反射机制

一,java的核心机制java有两种核心机制:java虚拟机(JavaVirtual Machine)与垃圾收集机制(Garbage collection): Java虚拟机:是运行所有Java程序的抽象计算机,是Java语言的运行环境,在其上面运行Java代码编译后的字节码程序,java虚拟...
  • u012585964
  • u012585964
  • 2016-07-24 02:32
  • 7847

java反射机制的理解

java反射机制:动态(运行时)获取类中的信息就是java反射,可以理解为对类的解剖。 反射机制主要提供的功能: 1)在运行时判断任意一个对象所属的类 2)在运行时构造任意一个类的对象 3)在运行时判断任意一个类所具有的成员变量和方法 4)在运行时调用任意一个对象的方法 ...
  • u012586848
  • u012586848
  • 2015-09-26 15:03
  • 482

Java反射机制与应用

JAVA反射机制     JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。     JAVA反射应用 &...
  • xiaoxian8023
  • xiaoxian8023
  • 2013-06-30 20:45
  • 9464

Java的反射机制和作用

转自这里 Java的反射机制是Java特性之一,反射机制是构建框架技术的基础所在。灵活掌握Java反射机制,对大家以后学习框架技术有很大的帮助。 那么什么是Java的反射呢?        大家都知道,要让Java程序能够运...
  • qq252596961
  • qq252596961
  • 2015-10-22 14:04
  • 429

【框架基础】:Java反射机制详解(一)

在学习框架设计之前,先来了解一下框架基础——Java反射机制。         一、什么是反射机制         反射机制是在程序运行状态时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都 ...
  • erlian1992
  • erlian1992
  • 2016-11-29 15:13
  • 1457

JAVA中的反射机制

反射,当时经常听他们说,自己也看过一些资料,也可能在设计模式中使用过,但是感觉对它没有一个较深入的了解,这次重新学习了一下,感觉还行吧!            一,先看一下反射的概念:     &...
  • liujiahan629629
  • liujiahan629629
  • 2014-01-08 22:31
  • 373773

Java反射机制的基本概念与使用

本篇文章分为以下几个部分: 1.认识反射 2.利用反射操作构造方法 3.利用反射调用类中的方法 4.反射中的invoke方法 5.利用反射调用类中的属性 反射在我们普通程序开发中基本使用不到,但是在我们底层的程序设计中使用特别广泛,例如代理模式、工厂模式等一些设计模式,包括我们使用的开发工具以及各大...
  • mlc1218559742
  • mlc1218559742
  • 2016-10-08 10:12
  • 2416

Java反射机制常用方法介绍

最近恰好用到反射机制,我把相关的知识整理了一下贴在下面。 〇、 Java反射机制简介在运行状态中,对任意一个类,都能够知道这个类的所有属性和方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。一、测试代码首先看测试用的Student类与main函数Student:impo...
  • a343902152
  • a343902152
  • 2016-03-04 20:16
  • 747

java反射机制与动态代理

在学习HadoopRPC时,用到了函数调用,函数调用都是采用的java的反射机制和动态代理来实现的,所以现在回顾下java的反射和动态代理的相关知识。 一、反射 JAVA反射机制定义: JAVA反射机制是java程序在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象...
  • u011067360
  • u011067360
  • 2014-05-05 13:03
  • 3187

Java的反射机制简述

反射机制是Java语言中一个非常重要的特性,它允许程序在运行时进行自我检查,同时也允许内部的成员进行操作。虽然这个特性在实际开发中使用的不多,但是像Pascal、C和C++等语言根本没有提供这样的特性。由于反射机制能够实现在运行时对类进行装载,因此能够增加程序的灵活性,但是不恰当地使用反射机制也会严...
  • SHENNONGZHAIZHU
  • SHENNONGZHAIZHU
  • 2016-07-19 18:56
  • 1190
    个人资料
    • 访问:88320次
    • 积分:859
    • 等级:
    • 排名:千里之外
    • 原创:44篇
    • 转载:54篇
    • 译文:0篇
    • 评论:15条
    最新评论