`
ajoo
  • 浏览: 453098 次
社区版块
存档分类
最新评论

中了annotation的毒了

阅读更多
在1.4上,我最喜欢玩的是dynamic proxy。以前的那个Sum的“奇技淫巧”就人人喊打来着。自打不用担心对1.3, 1.4的兼容问题后,我发现我越来越爱拿着annotation的锤子到处乱砸了,而且是用reflection而不是apt。

给Guice加了一个@Provide的外壳:
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);
  }
});


又给EasyMock加了@Mock的外壳:
public class FooTest extends PorkTest {
  @Mock private Foo foo;
  @Mock private Bar bar;
}


当考虑怎么样生成一个url字符串时,也是想用annotation:
public class User {
  @Param("username") String name;
  @Param("id") int id;
}
String queryString = QueryStringBuilder.build(new User("ajoo", 1));


绳啊,救~救我吧,一把年纪啦,该稳重一点,“企业”一点啦。我本来是讨厌@UglyRetardedWackyEwEwEwAnnotation来的。
分享到:
评论
13 楼 bigbusyboy 2008-02-22  
引用
这是中了xml的毒了。比我还病入膏肓啊。怜悯中。。。


所以说CoC好呀,配置文件少,代码耦合小。
12 楼 ajoo 2008-01-31  
hlxiong 写道
xml的拥趸
看到在代码里写配置就觉得恶害。。。

这是中了xml的毒了。比我还病入膏肓啊。怜悯中。。。
11 楼 jomper 2008-01-31  
不管怎么说,ajoo 那个@Mock的确用的很漂亮。
10 楼 hlxiong 2008-01-31  
xml的拥趸
看到在代码里写配置就觉得恶害。。。
9 楼 sim114 2008-01-31  
ajoo 写道
sim114 写道
强烈bs在代码里加非功能性的annotation

你这个起码@Mock 还是在test里,
@Provide @Singleton  还是有点用的(尽管我觉得这种配置型的放到外面更好一点点)

居然有在代码里加混淆策略的annotation,请自己查看 proguard
让人觉得脑子发烧了
拜托,这些只是开发用的,不要污染了运行环境好不

“混淆策略”?什么意思?

@Provide放到外面?你真的用过Guice?


proguard.sf.net

@KeepApplication
@KeepPublicGettersSetters
public class Application {
  @KeepClassMemberNames
  ....
 
  @Keep
  void xxx{}
 
}



Guice我没用过,和spring不一样?我印象中就是一个IOC,抱歉可能我想当然了

那我想说的是spring 的@Transactional @Autowired这种

好像前一阵这里提过说guice是针对spring用xml来配置,它是用annotation



8 楼 comet12345678 2008-01-31  
ajoo 写道
comet12345678 写道

annotation除了用来压制一些编译警告,其他地方还从来没有觉得有用

所以说,要多学习呦,同学。


   annotation是jdk新特性中最没有用的。可以用annotation搞出一些花样来,代码,配置,声明混在一起
不觉得有什么好,坚决不用。
  
  
7 楼 ajoo 2008-01-31  
sim114 写道
强烈bs在代码里加非功能性的annotation

你这个起码@Mock 还是在test里,
@Provide @Singleton  还是有点用的(尽管我觉得这种配置型的放到外面更好一点点)

居然有在代码里加混淆策略的annotation,请自己查看 proguard
让人觉得脑子发烧了
拜托,这些只是开发用的,不要污染了运行环境好不

“混淆策略”?什么意思?

@Provide放到外面?你真的用过Guice?
6 楼 ajoo 2008-01-31  
comet12345678 写道

annotation除了用来压制一些编译警告,其他地方还从来没有觉得有用

所以说,要多学习呦,同学。
5 楼 comet12345678 2008-01-31  

annotation除了用来压制一些编译警告,其他地方还从来没有觉得有用
4 楼 sorphi 2008-01-31  
sim114 写道
同样的还有codegen型的,
例如hibernate 生成表结构的那些 length=10 ... (真有人用这个吗?)

总之,我的观点是:除非是运行时必要的东西,否则都不要放到代码里或配置文件里
如果要加,请另放一个地方,部署的时候剥离出去


不同意你的观点,length=10或许能帮助调用者获取验证条件。再说,javadoc是运行时必要的东西么?@Override也不是但很有用。annotation无非是个meta数据而已,他什么时候有用,通过RetentionPolicy来决定不就行了吗?
3 楼 sim114 2008-01-31  
同样的还有codegen型的,
例如hibernate 生成表结构的那些 length=10 ... (真有人用这个吗?)

总之,我的观点是:除非是运行时必要的东西,否则都不要放到代码里或配置文件里
如果要加,请另放一个地方,部署的时候剥离出去
2 楼 sim114 2008-01-31  
强烈bs在代码里加非功能性的annotation

你这个起码@Mock 还是在test里,
@Provide @Singleton  还是有点用的(尽管我觉得这种配置型的放到外面更好一点点)

居然有在代码里加混淆策略的annotation,请自己查看 proguard
让人觉得脑子发烧了
拜托,这些只是开发用的,不要污染了运行环境好不
1 楼 jomper 2008-01-31  
XML正是被滥用后,人们才发现他的不足。
历史总是惊人的相似。

相关推荐

    hibernate annotation中文文档

    hibernate annotation中文文档

    Hibernate Annotation 中文文档

    **Hibernate Annotation 中文文档** 在Java的持久化框架中,Hibernate是一个非常重要的工具,它极大地简化了数据库操作。随着技术的发展,Hibernate Annotation逐渐成为主流,因为它提供了更直观、更简洁的方式来...

    hibernate annotation 中文文档

    《Hibernate Annotation 中文文档》是Java开发者们的重要参考资料,它详细介绍了如何在Hibernate框架中使用注解进行对象关系映射(ORM)。Hibernate是一款强大的开源Java持久化框架,它简化了数据库与Java对象之间的...

    jakarta.annotation-api-1.3.5-API文档-中文版.zip

    赠送jar包:jakarta.annotation-api-1.3.5.jar; 赠送原API文档:jakarta.annotation-api-1.3.5-javadoc.jar; 赠送源代码:jakarta....人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    javax.annotation-api-1.2-API文档-中文版.zip

    赠送jar包:javax.annotation-api-1.2.jar; 赠送原API文档:javax.annotation-api-1.2-javadoc.jar; 赠送源代码:javax.annotation-api...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    Annotation手册

    Annotation是Java语言中的一种特性,它为程序元素(如包、类、方法、变量等)提供了附加信息。这些信息可以是元数据,用于编译器、工具或运行时系统使用,但不会直接影响程序的执行。在Java中,Annotation表现为一种...

    ArcGIS Annotation

    在探讨“ArcGIS Annotation”这一主题时,我们深入解析了其在地理信息系统(GIS)领域中的应用与价值。ArcGIS Annotation作为Esri ArcGIS软件的一个关键功能,为地图制作者提供了将文本和图形符号添加到地图上的强大...

    jakarta.annotation-api-1.3.5-API文档-中英对照版.zip

    赠送jar包:jakarta.annotation-api-1.3.5.jar; 赠送原API文档:jakarta.annotation-api-1.3.5-javadoc...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    javax.annotation-api-1.3.2-API文档-中文版.zip

    赠送jar包:javax.annotation-api-1.3.2.jar; 赠送原API文档:javax.annotation-api-1.3.2-javadoc.jar; 赠送源代码:javax.annotation...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    annotation

    在IT行业中,注解(Annotation)是Java编程语言的一个重要特性,它允许程序员在代码中嵌入元数据,提供了一种安全的方法来修饰程序元素,如类、方法、变量等。注解不会直接影响代码的执行,但它们可以被编译器或运行...

    3D Annotation

    在ArcGIS中,3D Annotation是一种强大的功能,它允许用户在三维环境中创建和展示注解,从而增强地理信息的可视化效果。本知识点主要探讨如何在ArcGlobe中实现3D Annotation,以及涉及到的相关步骤和设置。 首先,...

    JAVA 标注annotation

    从某些方面看,annotation就像修饰符一样被使用,并应用于包、类型、构造方法、方法、成员变量、参数、本地变量的声明中。这些信息被存储在annotation的“name=value”结构对中。annotation类型是一种接口,能够通过...

    Annotation技术

    然后在Annotation中使用这个枚举: ```java public @interface PersonInfo { SexEnum sex(); } ``` 7. **使用自定义Annotation** 自定义Annotation就像其他修饰符一样使用,通常放在其他修饰符之前。成员值...

    annotation-1.1.0.jar

    @androidx.annotation.NonNull 缺失的兼容、androidx.annotation兼容包

    自定义的Annotation

    在iOS开发中,Annotation是苹果地图(MapKit)框架中的一个重要概念,用于在地图上添加可视化标记,以展示特定地理位置的信息。自定义的Annotation则允许开发者根据需求个性化地图上的标注,比如添加图片、自定义...

    Annotation.zip

    在Android开发中,注解(Annotation)是一种强大的工具,它允许开发者在代码中添加元数据,这些元数据可以在编译时或运行时被解析和处理。`Annotation.zip`可能包含了一个示例,展示了如何利用注解来自动化代码生成...

    annotation的jar包

    javax.annotation-3.0.jar javax.annotation-3.0.jar javax.annotation-3.0.jar

    Annotation详细介绍(大全)

    Annotation是Java语言中的一种元数据,它提供了在代码中附加信息的能力,这些信息可以在编译时或运行时被解析和使用。Annotation的本质是一种特殊类型的注解,它允许开发者向编译器、JVM或者工具提供关于代码的额外...

    用Annotation简化Java程序的开发(PDF)

    1. **静态性:** Annotation是在编译期间添加到Class文件中的,这意味着任何对Annotation的更改都需要重新编译代码才能生效,这限制了其动态配置能力。 2. **适用场景:** 虽然Annotation可以简化许多配置工作,但它...

Global site tag (gtag.js) - Google Analytics