Java反射1
1.1. 概述
反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。
反射本身并不是一个新概念,尽管计算机科学赋予了反射概念新的含义。在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。通俗意思就是把Java类中的各种成分映射成相应的Java类。例如,一个Java类中用一个Class类的对象来表示,一个类中的组成部分:成员变量,方法,构造方法,包等等信息也用一个个Java类来表示,就是汽车是一个类,汽车中的发动机,变速箱等等也是一个个的类。表示Java类的Class类显然要提供一个系列的方法来获得其中的变量,方法,构造方法,修饰符,包等信息,这些信息就是用相应类的实例对象来表示,他们是Field、Method、Contructor,Package等等。
1.2. Java类反射中的类
Java的类反射所需要的类并不多,主要是:Class、Field、Constructor、Method、Object,下面我将对这些类做一个简单的说明。
1.2.1.Object类:
每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。
1.2.2.Class类:
Java类用于描述一类事物的共性,定义了该类事务有什么属性,没有什么属性,至于这个属性的值是什么,则是由这个类的实例对象来确定的,不同的实例对象有不同的属性值。Java程序中的各个Java类,他们是否属于同一个类事务,是不是可以用一个类来描述这类事务呢?这个类就是Class。
我们可以用Person类代表人,它的实例对象有张三、李四这样一个个具体的人,Class类代表Java类,它的各个实例对象又分别对象又分别对应什么呢?字节码。
对应各个类在内存中的字节码,例如:Person类的字节码,ArrayList类的字节码,等等。
如何得到字节码?
Ø 类名.class ,如:Date.class
Ø 对象.getClass(),如:new Date().getClass();
Ø Class.forName(“类名”),如:Class.forName(“java.util.Date”)
注意:Java中有九中预定义字节码:8种基本数据类型和关键字void,用isPrimitive()方法可以判断是
相关文档:
一:准备 www.savarese.org download
1. rocksaw-1.0.0-src.tar.gz
2. vserv-tcpip-0.9.2-src.tar.gz
二:编译源文件得到jar包 使用Ant
1. build vserv-tcpip-0.9.2-src
在vserv-tcpip-0.9.2目录下面建一个tests目录,然后在cmd窗口下进入 ......
基于泛型的通用Dao接口:(重要是在应用hibernate或JPA时运用)
package com.qiujy.dao;
import java.io.Serializable;
import java.util.List;
/**
* 基于泛型的通用Dao接口
*/
public interface GenericDao {
void create(T entity);
void delete(T entity);
......
.class其实是在java运行时就加载进去的
getClass()是运行程序时动态加载的
下面以例子说明:
首先建一个基类Baseclass
package classyongfa;
public class Baseclass {
private String height;
public String getHeight()
{
return height;
}
public void setHeight(String height)
{
&n ......
package javatest_danny;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
public class pipeStreamTest {
public static void main(String[] args) {
try
{
&nbs ......