Java 反射问题

news/2024/5/19 4:01:00 标签: java, 反射, class, eclipse, linux
class="baidu_pl">
class="article_content clearfix">
class="markdown_views prism-atom-one-dark">

class="tags" href="/tags/FanShe.html" title=反射>反射(英语:reflection)是指计算机程序在运行时(runtime)可以访问、检测和修改它本身状态或行为的一种能力。用比喻来说,class="tags" href="/tags/FanShe.html" title=反射>反射就是程序在运行的时候能够“观察”并且修改自己的行为。
1.class="tags" href="/tags/FanShe.html" title=反射>反射类
举个例子:

class="prism language-class="tags" href="/tags/JAVA.html" title=java>javascript">class="token keyword">public class="token keyword">class class="token class-name">Foo class="token punctuation">{
	
	class="token keyword">public class="token keyword">void class="token function">helloclass="token punctuation">(class="token punctuation">) class="token punctuation">{
		Systemclass="token punctuation">.outclass="token punctuation">.class="token function">printlnclass="token punctuation">(class="token string">"hello"class="token punctuation">)class="token punctuation">;
	class="token punctuation">}

	class="token keyword">public class="token keyword">static class="token keyword">void class="token function">mainclass="token punctuation">(Stringclass="token punctuation">[class="token punctuation">] argsclass="token punctuation">) class="token punctuation">{
		class="token keyword">try class="token punctuation">{
		    Object foo class="token operator">= Classclass="token punctuation">.class="token function">forNameclass="token punctuation">(class="token string">"complete.classpath.and.Foo"class="token punctuation">)class="token punctuation">.class="token function">newInstanceclass="token punctuation">(class="token punctuation">)class="token punctuation">;
		    Method m class="token operator">= fooclass="token punctuation">.class="token function">getClassclass="token punctuation">(class="token punctuation">)class="token punctuation">.class="token function">getDeclaredMethodclass="token punctuation">(class="token string">"hello"class="token punctuation">, class="token keyword">new class="token class-name">Classclass="token operator"><class="token operator">?class="token operator">>class="token punctuation">[class="token number">0class="token punctuation">]class="token punctuation">)class="token punctuation">;
		    mclass="token punctuation">.class="token function">invokeclass="token punctuation">(fooclass="token punctuation">)class="token punctuation">;
		class="token punctuation">} class="token keyword">catch class="token punctuation">(class="token class-name">Exception eclass="token punctuation">) class="token punctuation">{
		    class="token comment">// Catching ClassNotFoundException, NoSuchMethodException
		    class="token comment">// InstantiationException, IllegalAccessException
		class="token punctuation">}

	class="token punctuation">}

class="token punctuation">}

2.class="tags" href="/tags/FanShe.html" title=反射>反射构造函数
举个例子:

class="prism language-class="tags" href="/tags/JAVA.html" title=java>javascript">class="token keyword">public class="token keyword">class class="token class-name">Foo class="token punctuation">{
	class="token keyword">public class="token function">Fooclass="token punctuation">(String sclass="token punctuation">, String aclass="token punctuation">) class="token punctuation">{
		
	class="token punctuation">}
	
	class="token keyword">public class="token keyword">void class="token function">helloclass="token punctuation">(class="token punctuation">) class="token punctuation">{
		Systemclass="token punctuation">.outclass="token punctuation">.class="token function">printlnclass="token punctuation">(class="token string">"hello"class="token punctuation">)class="token punctuation">;
	class="token punctuation">}	
	class="token keyword">public class="token keyword">static class="token keyword">void class="token function">mainclass="token punctuation">(Stringclass="token punctuation">[class="token punctuation">] argsclass="token punctuation">) class="token punctuation">{
		class="token keyword">try class="token punctuation">{
			Classclass="token operator"><class="token operator">?class="token operator">> classFoo class="token operator">= Classclass="token punctuation">.class="token function">forNameclass="token punctuation">(class="token string">"complete.classpath.and.Foo"class="token punctuation">)class="token punctuation">;
			Constructorclass="token operator"><class="token operator">?class="token operator">> declaredConstructorFoo class="token operator">= classFooclass="token punctuation">.class="token function">getDeclaredConstructorclass="token punctuation">(Stringclass="token punctuation">.class="token keyword">classclass="token punctuation">, Stringclass="token punctuation">.class="token keyword">classclass="token punctuation">)class="token punctuation">;
			declaredConstructorFooclass="token punctuation">.class="token function">setAccessibleclass="token punctuation">(class="token boolean">trueclass="token punctuation">)class="token punctuation">;
			Object foo class="token operator">= declaredConstructorFooclass="token punctuation">.class="token function">newInstanceclass="token punctuation">(class="token string">"a"class="token punctuation">, class="token string">"b"class="token punctuation">)class="token punctuation">;
		    Method m class="token operator">= fooclass="token punctuation">.class="token function">getClassclass="token punctuation">(class="token punctuation">)class="token punctuation">.class="token function">getDeclaredMethodclass="token punctuation">(class="token string">"hello"class="token punctuation">, class="token keyword">new class="token class-name">Classclass="token operator"><class="token operator">?class="token operator">>class="token punctuation">[class="token number">0class="token punctuation">]class="token punctuation">)class="token punctuation">;
		    mclass="token punctuation">.class="token function">invokeclass="token punctuation">(fooclass="token punctuation">)class="token punctuation">;
		class="token punctuation">} class="token keyword">catch class="token punctuation">(class="token class-name">Exception eclass="token punctuation">) class="token punctuation">{
			class="token comment">// Catching ClassNotFoundException, NoSuchMethodException
			class="token comment">// InstantiationException, IllegalAccessException
		class="token punctuation">}

	class="token punctuation">}

class="token punctuation">}

3.class="tags" href="/tags/FanShe.html" title=反射>反射成员变量
举个例子:

class="prism language-class="tags" href="/tags/JAVA.html" title=java>javascript">class="token keyword">public class="token keyword">class class="token class-name">Foo class="token punctuation">{

class="token keyword">public String ttt class="token operator">= class="token string">"aaaaaa"class="token punctuation">;
	class="token keyword">public class="token function">Fooclass="token punctuation">(String sclass="token punctuation">, String aclass="token punctuation">) class="token punctuation">{
		
	class="token punctuation">}
	
	class="token keyword">public class="token keyword">void class="token function">helloclass="token punctuation">(class="token punctuation">) class="token punctuation">{
		Systemclass="token punctuation">.outclass="token punctuation">.class="token function">printlnclass="token punctuation">(class="token string">"hello"class="token punctuation">)class="token punctuation">;
	class="token punctuation">}	
	class="token keyword">public class="token keyword">static class="token keyword">void class="token function">mainclass="token punctuation">(Stringclass="token punctuation">[class="token punctuation">] argsclass="token punctuation">) class="token punctuation">{
		class="token keyword">try class="token punctuation">{
         Classclass="token operator"><class="token operator">?class="token operator">> classFoo class="token operator">= Classclass="token punctuation">.class="token function">forNameclass="token punctuation">(class="token string">"complete.classpath.and.Foo"class="token punctuation">)class="token punctuation">;
            Object foo class="token operator">= classFooclass="token punctuation">.class="token function">newInstanceclass="token punctuation">(class="token punctuation">)class="token punctuation">;
            Field fieldttt class="token operator">= classFooclass="token punctuation">.class="token function">getDeclaredFieldclass="token punctuation">(class="token string">"ttt"class="token punctuation">)class="token punctuation">;
            fieldtttclass="token punctuation">.class="token function">setAccessibleclass="token punctuation">(class="token boolean">trueclass="token punctuation">)class="token punctuation">;
            String ttt class="token operator">= class="token punctuation">(Stringclass="token punctuation">) fieldtttclass="token punctuation">.class="token keyword">getclass="token punctuation">(classFooclass="token punctuation">)class="token punctuation">;
            Systemclass="token punctuation">.outclass="token punctuation">.class="token function">printlnclass="token punctuation">(class="token string">"reflectPrivateField tag = " class="token operator">+ tttclass="token punctuation">)class="token punctuation">;		class="token punctuation">} class="token keyword">catch class="token punctuation">(class="token class-name">Exception eclass="token punctuation">) class="token punctuation">{
			class="token comment">// Catching ClassNotFoundException, NoSuchMethodException
			class="token comment">// InstantiationException, IllegalAccessException
		class="token punctuation">}

	class="token punctuation">}

class="token punctuation">}

4.class="tags" href="/tags/FanShe.html" title=反射>反射私有方法
举个例子:

class="prism language-class="tags" href="/tags/JAVA.html" title=java>javascript">class="token keyword">public class="token keyword">class class="token class-name">Foo class="token punctuation">{
	class="token keyword">public class="token function">Fooclass="token punctuation">(String sclass="token punctuation">, String aclass="token punctuation">) class="token punctuation">{
		
	class="token punctuation">}
	
	class="token keyword">public class="token keyword">void class="token function">helloclass="token punctuation">(class="token punctuation">) class="token punctuation">{
		Systemclass="token punctuation">.outclass="token punctuation">.class="token function">printlnclass="token punctuation">(class="token string">"hello"class="token punctuation">)class="token punctuation">;
	class="token punctuation">}	

	class="token keyword">private class="token keyword">void class="token function">sssclass="token punctuation">(class="token punctuation">) class="token punctuation">{
		Systemclass="token punctuation">.outclass="token punctuation">.class="token function">printlnclass="token punctuation">(class="token string">"sss"class="token punctuation">)class="token punctuation">;
	class="token punctuation">}
	class="token keyword">public class="token keyword">static class="token keyword">void class="token function">mainclass="token punctuation">(Stringclass="token punctuation">[class="token punctuation">] argsclass="token punctuation">) class="token punctuation">{
		class="token keyword">try class="token punctuation">{
		    Object foo class="token operator">= Classclass="token punctuation">.class="token function">forNameclass="token punctuation">(class="token string">"complete.classpath.and.Foo"class="token punctuation">)class="token punctuation">.class="token function">newInstanceclass="token punctuation">(class="token punctuation">)class="token punctuation">;
		    Method m class="token operator">= fooclass="token punctuation">.class="token function">getClassclass="token punctuation">(class="token punctuation">)class="token punctuation">.class="token function">getDeclaredMethodclass="token punctuation">(class="token string">"sss"class="token punctuation">, class="token keyword">new class="token class-name">Classclass="token operator"><class="token operator">?class="token operator">>class="token punctuation">[class="token number">0class="token punctuation">]class="token punctuation">)class="token punctuation">;
		    mclass="token punctuation">.class="token function">setAccessibleclass="token punctuation">(class="token boolean">trueclass="token punctuation">)class="token punctuation">;
		    mclass="token punctuation">.class="token function">invokeclass="token punctuation">(fooclass="token punctuation">)class="token punctuation">;		class="token punctuation">} class="token keyword">catch class="token punctuation">(class="token class-name">Exception eclass="token punctuation">) class="token punctuation">{
			class="token comment">// Catching ClassNotFoundException, NoSuchMethodException
			class="token comment">// InstantiationException, IllegalAccessException
		class="token punctuation">}

	class="token punctuation">}

class="token punctuation">}

以上就是class="tags" href="/tags/JAVA.html" title=java>java中class="tags" href="/tags/FanShe.html" title=反射>反射的一些用法。


http://www.niftyadmin.cn/n/1600218.html

相关文章

Linux(RHEL4)中ftp的设置暨530错误的解决方法

在windows上使用ftp命令登录Linux服务器时总是提示&#xff1a;530 Must perform authentication before identifying USER。明明在服务器已经建立了test用户&#xff0c;但是使用该用户登录时&#xff0c;却不能成功&#xff0c;但是从Linux的日志可以看到已经连接上服务器&am…

Java 多线程问题

多线程&#xff0c;即便处理器只能运行一个线程&#xff0c;操作系统也可以通过快速的在不同线程之间进行切换&#xff0c;由于时间间隔很小&#xff0c;来给用户造成一种多个线程同时运行的假象。这样的程序运行机制被称为软件多线程。如微软的Windows作业系统和Linux就是在各…

vsftpd在Suse(Enterprise Linux 10)上的安装及配置

这两天在Suse上安装和配置FTP时&#xff0c;遇到不少问题&#xff0c;这里做一下总结:一、安装 Suse的图形用户界面做的很不错&#xff0c;所以安装过程也比较简单。 1、打开Yast&#xff0c;Software→Software Management&#xff1b; 2、刚开始使用Suse的软件管理器非常的不…

Java ip地址正则表达式问题

正则表达式&#xff0c;又称规则表达式。&#xff08;英语&#xff1a;Regular Expression&#xff0c;在代码中常简写为regex、regexp或RE&#xff09;&#xff0c;计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。 IP地址&#xff08;英…

如何在Suse(Suse Enterprise Linux 10)上配置Telnet

Suse的默认安装中包含了telnet客户端&#xff0c;但是不包含Telnet服务器&#xff0c;所以在安装完系统后需要自己安装和配置。以下是具体步骤&#xff1a; 一、安装Suse提供了图形化的Yast管理控制台&#xff0c;使用起来十分方便。1、Yast→Software→Software Management&am…

Java JNI使用问题

JNI &#xff08;Java Native Interface&#xff0c;Java本地接口&#xff09;是一种编程框架&#xff0c;使得Java虚拟机中的Java程序可以调用本地应用/或库&#xff0c;也可以被其他程序调用。 本地程序一般是用其它语言&#xff08;C、C或汇编语言等&#xff09;编写的&…

一个用C++模拟.Net事件机制的封装

基本上是参照 实现基于C的动态事件机制 的例子,做了一些改进,使之更加像.Net.功能加强, #include<map>//#include<multi_map>#include<iostream>#include<stdlib.h>#include<vector>usingnamespacestd;//#include"stdafx.h"/**//**…

Java List问题

List包括List接口以及List接口的所有实现类。因为List接口实现了Collection接口&#xff0c;所以List接口拥有Collection接口提供的所有常用方法&#xff0c;又因为List是列表类型&#xff0c;所以List接口还提供了一些适合于自身的常用方法。 在List集合中&#xff0c;我们常用…