2011年1月5日
#
Java 8之前,同一注解不能在相同的目标元素上多次使用,例如,如下的注解在Java 8之前是不允许的:
public class SampleClass {
@Quality("Security")
@Quality("Performance")
@Quality("Readability")
public void foo(){
//
}
}
Java 8引入了Repeatable注解(@Repeatable)可以解决这一问题,但光有可重复的注解定义还不够,还需要它的容器注解,两者一起来实现可重复注解的使用。实例如下:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
@Repeatable (Qualities.class)
public @interface Quality {
String value();
}
@Target(ElementType.METHOD)
public @interface Qualities {
Quality[] value();
}
其中,Quality是可重复注解,由@Repeatable注解标明,它的容器注解是Qualities,用于存放所有可重复的Quality(存贮在Quality[]中);同时还要注意可重复注解和它的容器注解的目标元素必须是一样的(这也不言自明)。如此这般,我们最开始的
SampleClass 在Java 8环境下就可以安全使用了。
以下单例实现思想来自《Java Design Patterns: A Programmer's Approach》.
该方法利用了Java缺省的Lazy类实例化机制克服了传统单例模式实现中Lazy实例化方式的不足。
public class Singleton {
private Singleton(){}
public static Singleton getInstance(){
return Helper.instance;
}
static class Helper {
private static Singleton instance = new Singleton();
}
}
以下转自StackOverflow(
http://stackoverflow.com/questions/5074063/maven-error-failure-to-transfer),亲测可用。
This worked for me in Windows as well.
- Locate the {user}/.m2/repository (Using Juno /Win7 here)
- In the Search field in upper right of window, type ".lastupdated". Windows will look through all subfolders for these files in the directory. (I did not look through cache.)
- Remove them by Right-click > Delete (I kept all of the lastupdated.properties).
- Then go back into Eclipse, Right-click on the project and select Maven > Update Project. I selected to "Force Update of Snapshots/Releases". Click Ok and the dependencies finally resolved correctly.
当我们写Groovy脚本代码的时候,有时会发生编译错误,如下:
- Groovy:Invalid duplicate class definition of class XXX : The source XXXX\XXX.groovy contains at least two
definitions of the class XXX.
- The type XXX is already defined
原因在于Groovy会把.groovy代码文件作为脚本或类定义来处理,例如如下代码:
class Order {
def security
def value
private buy_sell(su, closure) {
security = su[0]
quantity = su[1]
closure()
}
def getTo() {
this
}
}
def methodMissing(String name, args) {
order.metaClass.getMetaProperty(name).setProperty(order, args)
}
def getNewOrder() {
order = new Order()
}
Integer.metaClass.getShares = { -> delegate }
Groovy会把上述代码作为脚本处理,同时缺省用文件名来作为一个外围类类包括整个脚本程序,此时,如果该文件名恰好也是Order的话,那么就会出现重复的类定义错误提示。
解决办法是将脚本文件名取另外一个不同的名字。
已经申请OCUP中级考试的学员可以在一年内(截止到17年9月份)免费申请OCUP2中级考试的资格(原有考试仍可以参加)。此外,2014年3月份之后参加了原有OCUP中级认证考试的学员可以免费申请OCUP2中级认证考试。详见OMG网站声明(http://www.omg.org/ocup-2/exam-info.htm)。
搬家总是难免的,但旧家的东西不能带走难免会留下些许遗憾,希望它们能永远留下来.......
欢迎光临我的新家:
http://blog.sciencenet.cn/?53016 (科学网)
转自网络。
3岁,他去上幼儿园了,看着他小小的坚强的背影,心中又喜悦又有点小小的心酸。离别了一整天,孩子看到你高兴得奔跑过来,扑在你的怀里。跟你说:妈妈,我想你了。那一刻,抱着孩子就像抱着了整个世界。
6岁,他上小学了,孩子终于走进校门,这是多么值得纪念的事情,孩子的人生从此翻开了新的篇章,却没想到,这也是孩子离开我们的第一步。他已经对与你分开一天习以为常了,而且他喜欢每天去学校,这是他更喜欢的生活。甚至,他有时还会说:妈妈,在家好无聊,没有小朋友和我玩。
12岁,他上初中了,甚至有的开始上寄宿学校,一个月或者几个月回一次家,见上一次面。他们开始不再依赖你,甚至,他们喜欢和你对着干。你想帮他们做点事情,他们说:妈妈,我自己来吧。突然觉得这句话让我们觉得好失落,孩子是不是不再需要我们了?
18岁,他离开你去上大学,一年回来两次。回来的好几天前,家里的冰箱就装不下了,为他准备了各种各样他喜欢吃的东西。可是一回来打个照面,他就忙着和同学朋友聚会去了。从此,你最怕听到的一句话是:妈妈,我不回家吃饭了,你们自己吃吧。
大学毕业后,孩子留在了远方工作,一年也难的回来一次了。好不容易回来一趟,几天就走了。你最盼望的就是孩子的电话,希望,孩子对你说一声:妈妈,我很好,你保重身体。这样就足够了。
孩子结婚了,回家的时间有一半匀给了你的亲家,孩子回来的更少了。你已经习惯就老两口在家了,但是,你最希望听到孩子对你说:妈妈,今年过年我回家过啊!
当孩子又有了他们自己的孩子,你已经不再是他们的家庭成员了,他们的一家三口(或一家n口)里,已经不包括你们了。
而我们也慢慢的习惯了这样的日子。只是习惯在闲来无事的时候,经常翻翻相册,看看我们自己的一家三口,无论孩子身在何方,他却永远是我们家庭中无可取代的一员。
是啊,其实当孩子在身边的日子,我们是多么幸福。可是有时我们却还会抱怨。抱怨因为他,你做了太多的牺牲。抱怨他晚上老醒来,让你睡不好,抱怨他无理取闹,抱怨他爱撒娇长不大,抱怨他生病,让你操碎了心,抱怨为了培养他,花费了太多的精力与金钱...可是,如果你想想,10多年后,就算你想要,也没有机会了。孩子会不停的长大,过了这个时期他就再没有这个时期的习性。你是不是常常在他断奶后怀念喂他吃奶的日子,可是那时你却觉得好累好辛苦好厌倦。是不是常常看他以前吃手的照片觉得好可爱,可是你曾经却为要不停的给他洗手而烦恼透了。是不是在他褪去童声后,特别想念他曾经奶声奶气的声音,可是他以前撒娇的时候你却很不受用。是不是当孩子去上学后你特别怀念他黏在你身边的日子,可是以前你却总在想他要什么时候才能去上学啊。。。
时间无法倒流,过去了就只能永远过去了。孩子能呆在身边的日子是多么难得与宝贵。因为这一点,我更加的珍惜与孩子相处的每一刻,也让我无论遇到什么,都心存感恩。谢谢上天给我这么一个孩子,让我分享与见证他成长的每一刻。无论带给我多少困难,烦恼,甚至挫败,无论让我失去多少睡眠,时间,金钱,精力,我仍然豁达,因为,这都是上天的恩赐。
当他在身边的每一天,我都会让他觉得幸福,也是让我们都有一个美好的回忆。我不会给他太多压力,束缚,更不会给他牵绊,阻扰,但是我会适时管教,也会做量力而行的投资,因为我有责任与义务教会他生活的本领,好让他来日自由快乐的飞翔。同时,我也会告诉他,就算所有的路都行不通时,还有一条路你可以畅行,那就是回家的路。。。。。。。。