Java代码中前面带@是什么意思

Java代码中前面带@是什么意思?

比如:

package user.withouttm;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.apache.commons.dbcp.BasicDataSource;
@Service("service1")
public class UserJdbcWithoutTransManagerService {
@Autowired
private JdbcTemplate jdbcTemplate;
public void addScore(String userName,int toAdd){
String sql = "UPDATE t_user u SET u.score = u.score + ? WHERE user_name =?";
jdbcTemplate.update(sql,toAdd,userName);
}

这是一个Annotation
Annotation接口的实现类: Documented, Inherited, Retention, Target 都是用来定义自己定义的Annotation类的。

1. 注解(Annotation)类,以@interface 修饰 ,不能显示(explicit)extends或implements任何类

如:

java 代码
public @interface DefineAnnotation {
}

这种没有任何属性的Annotation类,也叫标识Annotation

2. 定义属性

java 代码
//属性必须加个小括号
public String value() ;
//有默认值的属性
public String value() default "aaa";

完整定义如下:

java 代码
//注解Annotation类不能显示(explicit)extends或implements任何类
//不定义任何属性就叫maket annotation
public @interface DefineAnnotation {

//定义一个属性,有属性的话,必须赋值,除非有默认default
public String value() default "aaa";

}

3.使用Annotation,有默认值的可以不用传参数,也可以传递参数。没有默认值的,必须传递参数。

如:

java 代码
public class TestAnnotation {

// @DefineAnnotation 有默认值的第一种使用方式
// @DefineAnnotation() 有默认值的第二种使用方式
@DefineAnnotation("ttitfly")
public void say(){
System.out.println("say hello");
}
public static void main(String[] args){
TestAnnotation ta = new TestAnnotation();
ta.say();
}
}

4. Retention (保存)

所有的Annotation类都实现了Annotation接口
@Retention本身就是个Annotation(注解)类
它的值是个enum枚举类型的RetentionPolicy,该枚举类型RetentionPolicy有三个值RUNTIME (会被JVM加载,并可以通过反射来获得到Annotation类的信息) ,CLASS (不会被JVM加载),Source
@Retention的值标识自己定义的Annotation(注解)类 是属于哪种保存策略,将来哪个类如果使用了这个自定义的注解类,将会使用这种保存策略

如:

java 代码
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
//所有的Annotation类都实现了Annotation接口
//@Retention本身就是个Annotation(注解)类
//它的值是个enum枚举类型的RetentionPolicy,该枚举类型RetentionPolicy有三个值RUNTIME (会被JVM加载,并可以通过反射来获得到Annotation类的信息) ,CLASS (不会被JVM加载),Source
//@Retention的值标识自己定义的Annotation(注解)类 是属于哪种保存策略,将来哪个类如果使用了这个自定义的注解类,将会使用这种保存策略
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {

String hello() default "ttitfly";
String world();
}

java 代码
//使用自己定义的Annotation类
public class MyTest {
//一个方法可以有多个注解类
@Deprecated
@MyAnnotation(hello="china",world="earth")
public void say(){
System.out.println("say hello");
}

}

java 代码
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-22
这个是JDK1.5加入的新特性,annotation(泛型)
第2个回答  2013-09-22
注解 ,从这个注解看,应该是spring的@service(创建对象)@Autowired(自动装配)

Java代码中前面带@是什么意思
相当于“注释” 比如@version 就是版本号

java@是什么意思?
java中“@”大多代表注解的意思。那么@param是用来在DAO层中声明参数的注解方式。例如:List<News> selectByUserIdAndOffset(@Param("userId") int userId, @Param("offset") int offset, @Param("limit") int limit);param标签可以归档方法或构造器的某个单一参数,或者归档类、接口以及泛型方法的...

Java中的@符号什么意思?
在java中,@表示注解

java程序中,有些@开头的代码,有什么用?与程序本身有关吗
是注解的关键字。不同的注解根据其不同的注解处理器有不同的效果。这方面你可以学习下java的注解,学习后还可以自己定义注解。例如:@Override 表示该方法继承自父类 现在很多主流框架都是通过注解来替代配置文件了。

java程序里 【@】 是什么意思,等待java高手回答,提供资料也很感谢!_百 ...
方法、成员变量、变量初始化的警告。在java5.0,sun提供的javac编译器为我们提供了-Xlint选项来使编译器对合法的程序代码提出警告,此种警告从某种程度上代表了程序错误。例如当我们使用一个generic collection类而又没有提供它的类型时,编译器将提示出"unchecked warning"的警告。

java再方法前加@xxx的是什么意思
这是注解,注解是有很多的。简单来说:@override是重写的标明。@SuppressWarnings("unchecked")是不去报错误检查(不是指代码错误) 很多的

java注释中的@什么意思?
XXX代表是注解(Annotation的标准翻译)。和注释类似,区别是注释是给人看的,而注解是给Java系统看的。你可以定义自己的注解,具体内容就很多了,看看书吧,你会有收获的

Java里的"@override"意思是什么? 有什么用?
Override 的作用是:如果想重写父类的方法,比如toString()方法的话,在方法前面加上@Override 系统可以帮你检查方法的正确性。Override的用法:Override:java.lang.Override是一个marker annotation类型,它被用作标注方法。它说明了被标注的方法重载了父类的方法,起到了断言的作用。

正则表达式@.*?@是什么意思?
在这个正则表达式的含义为:第一部分@:匹配@字符 第二部分.*?:匹配任意字符零次或者多次,但是尽可能少(非贪婪模式)第三部分@:匹配@字符 测试结果如下图所示:你也可以使用JAVA正则表达式在线测试在线尝试。

Java中的@Override是什么意思?
Override是伪代码,表示重写(当然不写也可以)建议写上,有如下好处:1、可以当注释用,方便阅读;2、编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错,比如你如果没写@Override而你下面的方法名又写错了,这时你的编译器是可以通过的(它以为这个方法是你的子类中自己增加的...

相似回答