本文目录一览:
- 1、java自定义注解类中的方法可以带参数吗
- 2、java方法名前注释问题
- 3、JAVA求加注解
- 4、java注解是怎么实现的
- 5、java开发时怎么自动添加注解
- 6、Java 中的@param 注解如何使用?
java自定义注解类中的方法可以带参数吗
是的,当注解有value()方法时,不需要指明具体名称,Java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。 注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。
java方法名前注释问题
Java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。
注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。包含在 java.lang.annotation 包中。
1、元注解
元注解是指注解的注解。包括 @Retention @Target @Document @Inherited四种。
1.1、@Retention: 定义注解的保留策略
@Retention(RetentionPolicy.SOURCE) //注解仅存在于源码中,在class字节码文件中不包含
@Retention(RetentionPolicy.CLASS) // 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得,
@Retention(RetentionPolicy.RUNTIME) // 注解会在class字节码文件中存在,在运行时可以通过反射获取到
1.2、@Target:定义注解的作用目标
@Target(ElementType.TYPE) //接口、类、枚举、注解
@Target(ElementType.FIELD) //字段、枚举的常量
@Target(ElementType.METHOD) //方法
@Target(ElementType.PARAMETER) //方法参数
@Target(ElementType.CONSTRUCTOR) //构造函数
@Target(ElementType.LOCAL_VARIABLE)//局部变量
@Target(ElementType.ANNOTATION_TYPE)//注解
@Target(ElementType.PACKAGE) ///包
由以上的源码可以知道,他的elementType 可以有多个,一个注解可以为类的,方法的,字段的等等
1.3、@Document:说明该注解将被包含在javadoc中。
1.4、@Inherited:说明子类可以继承父类中的该注解。
JAVA求加注解
public class Sentence //定义一个访问级别为public(公有的)的类Sentence
{
private String words; //定义一个全局变量的访问级别为private(私有的)的字符串(String)变量words
private String Text=""; //定义一个全局变量的访问级别为private(私有的)的字符串(String)变量Text,并赋值为"";
public Sentence (String text) //定义一个访问级别为public(公有的)的Sentence类的无返回值构造方法,并创建构造方法参数为一个String(字符串)类型的变量,text为传入变量的接收者,便于在该方法内部使用
{
this.words=text; //为该类的私有字符串words赋值,赋值为text,这里的this表示该类的实例(对象),this.(点)该类全局变量即可使用
}
public String reversedText(int a) //定义一个访问级别为public(公有的)的返回String(字符串)类型的方法reversedText,并创建该方法的参数为一个int(整型)的变量,a为传入变量的接收者,便于在该方法内部使用
{
Text=Text+words.charAt(a); //给全局变量Text赋值为Text加全局变量words的第a个字符,字符串相加是依次首尾连接起来的,也就是说String a = "ni"; String b = "hao"; a+b则等于"nihao",该处的charAt(int index)方法是一个能够用来检索特定引索下的字符的String实例的方法,返回一个字符,举例:String a = "abcdefg"; a.charAt(3)则返回字符"d",索引是从0开始的
if (a=1) //if条件判断,()内为判断条件,这句话意思是如果a 大于等于 1的话执行下面大括号内的操作
{
return reversedText(a-1); //满足上面条件了执行这句话,返回reversedText(a-1),也就是说再次执行该方法,并且传入方法参数a-1,因为reversedText(age 0)方法返回一个整型变量,所以可以直接用这个方法作为返回值,再次调用方法传入a-1的数字,实质上就是想让a的值不满足上头if条件。
}
else //如果不满足上面的条件则执行下面大括号内的操作
return Text; //返回全局变量Text
} //这个方法在方法里调用了自己,俗称递归
public void reverse() //定义一个访问级别为public(公有的)的无返回值的(void就是无返回值,不写也默认是void)方法reverse,没有参数
{
int i=words.length()-1; //定义一个整型变量i,赋值为全局变量words字符串的长度-1
reversedText(i); //调用 reversedText(i)方法传入参数i
}
public String getText(){ //定义一个访问级别为public(公有的)返回String(字符串类型)的方法 getText,无参数,该方法是得到全区变量Text的方法。
return Text; //返回全局变量Text
}
public static void main (String []args) //程序主函数入口,可自动生成
{
Sentence greeting = new Sentence("Hello!"); //创建一个Sentence 类的实例(对象)greeting ,因为Sentence类(也就是本类)的构造方法有参数,所以传入参数"Hello",构造方法在创建实例的时候自动调用。
greeting.reverse(); //用greeting调用该实例所属类的 reverse方法。实例的一个作用就是调用所属类的属性及方法。
System.out.println(greeting.getText()); //在控制台打印出全局变量Text,System.out.println()为打印方法,是在控制台打印,里面必须是字符串,调用里调用getText()方法得到全局变量Text,并打印在控制台上
}
java注解是怎么实现的
注解的使用一般是与java的反射一起使用,下面是一个例子
注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应的事。标记可以加在包,类,字段,方法,方法的参数以及局部变量上。
自定义注解及其应用
1)、定义一个最简单的注解
public @interface MyAnnotation {
//......
}
2)、把注解加在某个类上:
@MyAnnotation
public class AnnotationTest{
//......
}
以下为模拟案例
自定义注解@MyAnnotation
1 package com.ljq.test;
2
3 import java.lang.annotation.ElementType;
4 import java.lang.annotation.Retention;
5 import java.lang.annotation.RetentionPolicy;
6 import java.lang.annotation.Target;
7
8 /**
9 * 定义一个注解
10 *
11 *
12 * @author jiqinlin
13 *
14 */
15 //Java中提供了四种元注解,专门负责注解其他的注解,分别如下
16
17 //@Retention元注解,表示需要在什么级别保存该注释信息(生命周期)。可选的RetentionPoicy参数包括:
18 //RetentionPolicy.SOURCE: 停留在java源文件,编译器被丢掉
19 //RetentionPolicy.CLASS:停留在class文件中,但会被VM丢弃(默认)
20 //RetentionPolicy.RUNTIME:内存中的字节码,VM将在运行时也保留注解,因此可以通过反射机制读取注解的信息
21
22 //@Target元注解,默认值为任何元素,表示该注解用于什么地方。可用的ElementType参数包括
23 //ElementType.CONSTRUCTOR: 构造器声明
24 //ElementType.FIELD: 成员变量、对象、属性(包括enum实例)
25 //ElementType.LOCAL_VARIABLE: 局部变量声明
26 //ElementType.METHOD: 方法声明
27 //ElementType.PACKAGE: 包声明
28 //ElementType.PARAMETER: 参数声明
29 //ElementType.TYPE: 类、接口(包括注解类型)或enum声明
30
31 //@Documented将注解包含在JavaDoc中
32
33 //@Inheried允许子类继承父类中的注解
34
35
36 @Retention(RetentionPolicy.RUNTIME)
37 @Target({ElementType.METHOD, ElementType.TYPE})
38 public @interface MyAnnotation {
39 //为注解添加属性
40 String color();
41 String value() default "我是林计钦"; //为属性提供默认值
42 int[] array() default {1, 2, 3};
43 Gender gender() default Gender.MAN; //添加一个枚举
44 MetaAnnotation metaAnnotation() default @MetaAnnotation(birthday="我的出身日期为1988-2-18");
45 //添加枚举属性
46
47 }
注解测试类AnnotationTest
1 package com.ljq.test;
2
3 /**
4 * 注解测试类
5 *
6 *
7 * @author jiqinlin
8 *
9 */
10 //调用注解并赋值
11 @MyAnnotation(metaAnnotation=@MetaAnnotation(birthday = "我的出身日期为1988-2-18"),color="red", array={23, 26})
12 public class AnnotationTest {
13
14 public static void main(String[] args) {
15 //检查类AnnotationTest是否含有@MyAnnotation注解
16 if(AnnotationTest.class.isAnnotationPresent(MyAnnotation.class)){
17 //若存在就获取注解
18 MyAnnotation annotation=(MyAnnotation)AnnotationTest.class.getAnnotation(MyAnnotation.class);
19 System.out.println(annotation);
20 //获取注解属性
21 System.out.println(annotation.color());
22 System.out.println(annotation.value());
23 //数组
24 int[] arrs=annotation.array();
25 for(int arr:arrs){
26 System.out.println(arr);
27 }
28 //枚举
29 Gender gender=annotation.gender();
30 System.out.println("性别为:"+gender);
31 //获取注解属性
32 MetaAnnotation meta=annotation.metaAnnotation();
33 System.out.println(meta.birthday());
34 }
35 }
36 }
枚举类Gender,模拟注解中添加枚举属性
1 package com.ljq.test;
2 /**
3 * 枚举,模拟注解中添加枚举属性
4 *
5 * @author jiqinlin
6 *
7 */
8 public enum Gender {
9 MAN{
10 public String getName(){return "男";}
11 },
12 WOMEN{
13 public String getName(){return "女";}
14 }; //记得有“;”
15 public abstract String getName();
16 }
注解类MetaAnnotation,模拟注解中添加注解属性
1 package com.ljq.test;
2
3 /**
4 * 定义一个注解,模拟注解中添加注解属性
5 *
6 * @author jiqinlin
7 *
8 */
9 public @interface MetaAnnotation {
10 String birthday();
11 }
java开发时怎么自动添加注解
想要自动添加注释,首先需要对eclipse进行一些设置。
打开Eclipse,然后点击-windows-preferences-Java-code styles-code templates-comments-types-点击右侧的edit进行编辑,在打开的编辑窗口中修改下面的文字
/**
* @author ${user}
*
* ${tags}
*/
替换成
/**
* @author 你的名字
*
* ${tags}
*/
上面的操作对应的图片是这样的:
这样作者就修改成你的名字了,更多的信息可以点击本编辑窗口上面的insert varibles按钮,会弹出一些文件名称,项目名称等参数,你可以选择性地添加到你的注视中。
然后在你的类中,你只要敲入/**然后换行,注释就自动滴添加到你的代码中了~希望能帮上你的忙~^_^
追问:
这只是文档前的版权声明注释,如果要在文档中对代码添加注释,里面带上修改时间,如何弄
回答:
这样弄哈~
1.开始还是打开Eclipse,然后点击-windows-preferences-Java-code styles-code templates-comments
2.下一步选择methods,而不是types。然后edit,insert varibles,添加上date变量,长下面这个样子。
然后你在你的函数上面同样是敲入/**回车,就出现了修改的日期了
补充:
对于那个行首出现注释的问题是java的代码风格的问题,可以这样改
打开Eclipse,然后点击-windows-preferences-Java-code styles-formatter
-edit-comment 的标签页-never indent line comments on first column
这样,注释的//就会缩进了,而不是顶在行首了~
Java 中的@param 注解如何使用?
注解,@param是参数的解释。如:/***@param s 这里表示对s的文字说明,描述*/public void aa(String s){}一般java中@表示注解,解释一个方法,类,属性的作用。
一. 基本概念
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
二. 研发背景
Java是由Sun Microsystems公司推出的Java面向对象程序设计语言(以下简称Java语言)和Java平台的总称。Java由James Gosling和同事们共同研发,并在1995年正式推出。Java最初被称为Oak,是1991年为消费类电子产品的嵌入式芯片而设计的。1995年更名为Java,并重新设计用于开发Internet应用程序。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态Web、Internet计算。