Java Reflection
反射是Java语言中很重要的一个组成部分,所以就此话题讨论的资源可谓数之不尽,日常开发也会经常使用到关于反射的Reflection
API。Java5.0
Tiger出现以后,更对反射API有了新的扩展,尽管讨论的话题很多,不过我还是觉得不够全面,尤其是对泛型这一块,所以就我所知,再花力气总结一番
首先反射的入口是从Class开始的,所以如何获取Class就变得十分关键了。这里总结了几种方式:
1.通过${name}.class 语法。这里${name}可以是对象,也可以是原始数据类型,不过别忘了void.class和Void.class
2.通过${name}.TYPE 语法。这里${name}是八种原始数据的包装类和Void.TYPE
3.通过对象的getClass()方法。
4.通过Class对象的forName()方法
5.通过类Class的getSuperclass()获取父亲类Class
6.通过类Class的getEnclosingClass()获取外部类Class
7.通过类Class的getClasses()和getDeclaredClasses()获取内部类Class
下面是一张表用来说明getClasses()和getDeclaredClasses()两个方法,稍后还会用该表说明其他Reflection API
--------------------------------------------------------------------------------------------
Member
| Class API
| Return type
| Inherited members
| Private members
--------------------------------------------------------------------------------------------
Class | getDeclaredClasses() | Array | N | Y
| getClasses() | Array | Y | N
--------------------------------------------------------------------------------------------
Field | getDeclaredField() &
相关文档:
在Java中,“线程”指两件不同的事情:
1、java.lang.Thread类的一个实例;
2、线程的执行。
使用java.lang.Thread类或者java.lang.Runnable接口编写代码来定义、实例化和启动新线程。
一个Thread类实例只是一个对象,像Java中的任何其他对象一样,具有变量和方法,生死于堆上。
Java中,每个线程都有一个调 ......
有两种方式:静态部署和动态部署。在下文中$CATALINA_HOME指的是Tomcat根目录。
一、静态部署
静态部署指的是我们在服务器启动之前部署程序,只有当服务器启动之后,Web应用程序才能访问。以下3中方式都可以部署:
1、将PetWeb目录拷贝到$CATALINA_HOME\webapps下,然后启动服务器就可以了。这种方式比较简单,但是web ......
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.io.Serializable;
import java.rmi.Na ......
首先引用一篇文章,介绍一个简单的JNI的调用的过程。 JAVA以其跨平台的特性深受人们喜爱,而又正由于它的跨平台的目的,使得它和本地机器的各种内部联系变得很少,约束了它的功能。解决JAVA对本地操作的一种方法就是JNI。 JAVA通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DL ......