在1.4上,我最喜欢玩的是dynamic proxy。以前的那个Sum的“奇技淫巧”就人人喊打来着。自打不用担心对1.3, 1.4的兼容问题后,我发现我越来越爱拿着annotation的锤子到处乱砸了,而且是用reflection而不是apt。
给Guice加了一个@Provide的外壳:
[code]
class MyModule extends AbstractModule {
@Provide @Singleton
public Foo foo(FooImpl impl) {
return impl;
}
@Provide @LittleStrong
public Bar bar(A a, B b) {
return new BarImpl(a, b);
}
}
// 用来代替
bind(Foo.class).to(FooImpl.class).in(Singleton.class);
bind(Bar.class).annotatedWith(LittleStrong.class).toProvider(new Provider<Bar>() {
@Inject A a;
@Inject B b;
public Bar get() {
return new BarImpl(a, b);
}
});
[/code]
又给EasyMock加了@Mock的外壳:
[code]
public class FooTest extends PorkTest {
@Mock private Foo foo;
@Mock private Bar bar;
}
[/code]
当考虑怎么样生成一个url字符串时,也是想用annotation:
[code]
public class User {
@Param("username") String name;
@Param("id") int id;
}
String queryString = QueryStringBuilder.build(new User("ajoo", 1));
[/code]
绳啊,救~救我吧,一把年纪啦,该稳重一点,“企业”一点啦。我本来是讨厌@UglyRetardedWackyEwEwEwAnnotation来的。
给Guice加了一个@Provide的外壳:
[code]
class MyModule extends AbstractModule {
@Provide @Singleton
public Foo foo(FooImpl impl) {
return impl;
}
@Provide @LittleStrong
public Bar bar(A a, B b) {
return new BarImpl(a, b);
}
}
// 用来代替
bind(Foo.class).to(FooImpl.class).in(Singleton.class);
bind(Bar.class).annotatedWith(LittleStrong.class).toProvider(new Provider<Bar>() {
@Inject A a;
@Inject B b;
public Bar get() {
return new BarImpl(a, b);
}
});
[/code]
又给EasyMock加了@Mock的外壳:
[code]
public class FooTest extends PorkTest {
@Mock private Foo foo;
@Mock private Bar bar;
}
[/code]
当考虑怎么样生成一个url字符串时,也是想用annotation:
[code]
public class User {
@Param("username") String name;
@Param("id") int id;
}
String queryString = QueryStringBuilder.build(new User("ajoo", 1));
[/code]
绳啊,救~救我吧,一把年纪啦,该稳重一点,“企业”一点啦。我本来是讨厌@UglyRetardedWackyEwEwEwAnnotation来的。