- 浏览: 234544 次
- 性别:
- 来自: 上海
最新评论
-
Dom_4j:
...
理解注解中的@Inherited -
s469799470:
demo少个ID
iframe父子页面交互问题 -
errorerror0:
...
iframe父子页面交互问题 -
errorerror0:
iframe父子页面交互问题 -
johnawm:
2012-12-18 wangshibei 写道CountD ...
CountDownLatch的使用
文章列表
深入学习EnumSet
- 博客分类:
- JAVA基础
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 ...
枚举中valueOf用法
- 博客分类:
- JAVA基础
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基础
本文主要介绍如何使用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
- 博客分类:
- JAVA基础
@Inherited:
@Inherited 元注解是一个标记注解,@Inherited阐述了某个被标注的类型是被继承的。
如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。
注意:@Inherited annotation类型是被标注过的class的子类所继承。类并不从它所实现的接口继承annotation,
方法并不从它所重载的方法继承annotation。
当@Inherited annotation类型标注的annotation的Retention是RetentionP ...
元注解:
元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。
Java5.0定义的元注解:
1.@Target,
2.@Retention,
3.@Documented,
...
apache-fileupload文件上传
- 博客分类:
- 开源框架
临时文件的清理:
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不存在了。
那么,运行时 ...
泛型类型的擦除:
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;
/**
* 私有化构造方法,好在内部 ...