Java范型
从jdk1.5开始,Java中开始支持范型了。范型是一个很有用的编程工具,给我们带来了极大的灵活性。在看了《java核心编程》之后,我小有收获,写出来与大家分享。
所谓范型,我的感觉就是,不用考虑对象的具体类型,就可以对对象进行一定的操作,对任何对象都能进行同样的操作。这就是灵活性之所在。但是,正是因为没有考虑对象的具体类型,因此一般情况下不可以使用对象自带的接口函数,因为不同的对象所携带的接口函数不一样,你使用了对象A的接口函数,万一别人将一个对象B传给范型,那么程序就会出现错误,这就是范型的局限性。所以说,范型的最佳用途,就是用于实现容器类,实现一个通用的容器。该容器可以存储对象,也可以取出对象,而不用考虑对象的具体类型。因此,在学习范型的时候,一定要了解这一点,你不能指望范型是万能的,要充分考虑到范型的局限性。下面我们来探讨一下范型的原理以及高级应用。首先给出一个范型类:
public class Pair<T>
{
public Pair() ...{ first = null; second = null; }
public Pair(T first, T second) ...{ this.first = first; this.second = second; }
public T getFirst() ...{ return first; }
public T getSecond() ...{ return second; }
public void setFirst(T newValue) ...{ first = newValue; }
public void setSecond(T newValue) ...{ second = newValue; }
private T first;
private T second;
}
我们看到,上述Pair类是一个容器类(我会多次强调,范型天生就是为了容器类的方便实现),容纳了2个数据,但这2个数据类型是不确定的,用范型T来表示。关于范型类如何使用,那是最基本的内容,在此就不讨论了。
下面我们来讨论一下Java中范型类的实现原理。在java中,范型是在编译器中实现的,而不是在虚拟机中实现的,虚拟机对范型一无所知。因此,编译器一定要把范型类修改为普通类,才能够在虚拟机中执行。在java中,这种技术称之为“擦除”,也就是用Object类型替换范型。上述代码经过擦除后就变成如下形式:
public class Pair
{
public Pair(Object first, Object sec
相关文档:
public class Test {
public static void main(String args[]) {
System.out.println(Integer.toBinaryString(20)); //十进制-->2进制
System ......
package test;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 实现对字符串表达式进行简单的包括函数的运算。
*
* @auth ......
使用java中的动态代理可以完成很多事情,比如将业务实例进行托管,实现AOP等,但是Php中没有实现这样的东西,昨天突然想到其实可以通过eval来模拟一个动态代理机制。php比java不同的是,php是不需要编译的,因此只要我们能够动态生成一段代码,然后用eval来执行就可以达到效果。代码如下:
/**
* 代理实现类
*/
inter ......
package org.rut.util.algorithm.support;
import org.rut.util.algorithm.SortUtil;
/**
* @author treeroot
* @since 2006-2-2
* @version 1.0
*/
public class InsertSort implements SortUtil.Sort{
/* (non-Javadoc)
* ......
Java反编译工具Eclipse插件--Jode Decompiler
安装非常的简单:
help => Software Updates => Find and Install... => Search for new features to install,
单击"New Remote Site..." 在URL栏输入 http://www.technoetic.com/eclipse/update ,
然后下一步,就可以看到“j ......