`
文章列表
Set接口的实现类HashSet/TreeSet,它们内部都是用对应的HashMap/TreeMap实现的, 但EnumSet的实现与EnumMap没有任何关系,而是用极为精简和高效的位向量实现的, 除了实现机制,EnumSet的用法也有一些不同。与TreeSet/HashSet不同, EnumSet是一个抽象类,不能直接通过new新建,EnumSet提供了若干静态工厂方法创建EnumSet类型的对象,比如: public static <E extends Enum<E>> EnumSet<E> noneOf(Class<E> elementT ...
在Mybatis中我们经常会用到将某个bean作为参数类型parameterType或者结果返回值类型ResultType,所以很多时候我们需要把完成的Bean的包名在mapper文件中 <select id="selectUser" parameterType="com.test.entity.User" resultType="com.tes ...
Enum的特征如下: 1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例。   2.所有枚举值都是public   ,   static   ,   final的。注意这一点只是针对于枚举值, 我们可以和在普通类里面定义   变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。     3.Enum默认实现了java.lang.Comparable接口。     4.Enum覆载了了toString方法,因此我们如果调用Color.Blue.toString()默认返回字符串”Blue”.      5.Enum提供了一个v ...
Class.getResources(String path) path如果是以 / 开头,就从classpath中去找(classpath可以认为是eclipse的bin目录或者是target的classes目录), 如果不以/开头,就以当前类的位置开始找,也就是它有两种搜索方式。 .classloader不能以/为开头,classloader.getResource只能从classpath中去找。 例如在src/com/test/example2目录下存在aa.xml文件则。        @Test public void test1() { System.ou ...
一种场景:客户需要设计一个汽车模型,基本的功能有启动、停止、按喇叭、引擎这些功能, 执行的顺序由客户自己控制。 时间紧迫的情况下,我们设计出这种模型: public abstract class CarModel { private ArrayList<String> sequence = new ArrayList<>(); protected abstract void start(); protected abstract void stop(); protected abstract void alarm(); ...
本文主要介绍如何使用Java运行时级别的注解配合反射来搭建框架,以下是构建sql表的简单例子,阐明了搭建运行时框架的方法 1.定义两个运行时注解,分别作用于类和字段表示表名和列名 @Retention(RetentionPolicy.RUNTIME) public @interface Table { String name(); } @Retention(RetentionPolicy.RUNTIME) public @interface Column { String name(); } 2.定义存储列的模型NameAndType public cla ...
注解处理器: Java SE5扩展了反射机制的API,以帮助程序员快速的构造自定义注解处理器。 注解处理器类库(java.lang.reflect.AnnotatedElement): Java使用Annotation接口来代表程序元素前面的注解,该接口是所有Annotation类型的父接口。除此 ...
@Inherited:    @Inherited 元注解是一个标记注解,@Inherited阐述了某个被标注的类型是被继承的。 如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。 注意:@Inherited annotation类型是被标注过的class的子类所继承。类并不从它所实现的接口继承annotation,       方法并不从它所重载的方法继承annotation。   当@Inherited annotation类型标注的annotation的Retention是RetentionP ...

JAVA注解总结

元注解:   元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。     Java5.0定义的元注解:     1.@Target,     2.@Retention,     3.@Documented, ...
临时文件的清理: FileCleaningTracker fileCleaningTracker = FileCleanerCleanup.getFileCleaningTracker(servletcontext); DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setFileCleaningTracker(fileCleaningTracker); //相关源代码如下:DiskFileItemFactory.java public FileItem createItem(String f ...
泛型类型注意细节: 1.泛型类型变量不能是基本数据类型 比如,没有ArrayList<double>,只有ArrayList<Double>。因为当类型擦除后,ArrayList的原始类型变为Object,但是Object类型不能存储double值,只能引用Double的值。 2.泛型类型没有特定的class ArrayList<String> arrayList=new ArrayList<String>();    因为类型擦除之后,ArrayList<String>只剩下原始类型,泛型信息String不存在了。 那么,运行时 ...

JAVA泛型理解

泛型类型的擦除:   ArrayList<String> arrayList1=new ArrayList<String>(); ArrayList<Integer> arrayList2=new ArrayList<Integer>(); System.out.println(arrayList1.getClass()==arrayList2.getClass());//结果为true 说明泛型类型String和Integer都被擦除掉了,只剩下了原始类型。 试想在什么时候进行擦除的呢 ...
不同于IO,NIO通道会自动地相应中断,代码如下: public class NIOBlocked implements Runnable{ private final SocketChannel sc; public NIOBlocked(SocketChannel sc) { this.sc=sc; } @Override public void run() { // TODO Auto-generated method stub System.out.println("Wating to read in"); try { sc.re ...

桥接模式

现实中场景:发送提示消息 从业务上看,消息又分成普通消息、加急消息和特急消息多种, 不同的消息类型,业务功能处理是不一样的:     加急消息是在消息上添加加急,而特急消息除了添加特急外,还会做一条催促的记录,多久不完成会继续催促。 从发送消息的手段上看,又有系统内短消息、手机短消息、邮件等等。 考虑简单情况:     消息先只是实现发送普通消息,先实现系统内短消息和邮件。其它的功能       public interface Message { public void send(String message,String toUser); } ...

单例模式

单例模式分为两种:懒汉式和饿汉式,先看下懒汉式的实现: public class Singleton { /** * 定义一个变量来存储创建好的类实例 */ private static Singleton uniqueInstance = null; /** * 私有化构造方法,好在内部 ...
Global site tag (gtag.js) - Google Analytics