-
Created with IntelliJ IDEA.
-
@author : cunyu
-
@version : 1.0
-
@email : 747731461@qq.com
-
@website : https://cunyu1943.github.io
-
@date : 2021/6/20 10:04
-
@project : JavaWeb
-
@package : com.cunyu
-
@className : OverrideTest
-
@description :
*/
public class OverrideTest {
private Integer id;
private String name;
public OverrideTest(Integer id, String name) {
this.id = id;
this.name = name;
}
@Override
public String toString() {
final StringBuffer sb = new StringBuffer(“OverrideTest{”);
sb.append(“id=”).append(id);
sb.append(“, name='”).append(name).append(‘’');
sb.append(‘}’);
return sb.toString();
}
public static void main(String[] args) {
Integer id = 101;
String name = “村雨遥”;
OverrideTest overrideTest = new OverrideTest(id, name);
System.out.println(overrideTest);
}
}
@Deprecated
一般用在方法之前,表示该方法已经过期,不建议再继续使用(但是仍然有效,只不过可能有更新的版本,推荐使用更新的版本)。
package com.cunyu;
/**
-
Created with IntelliJ IDEA.
-
@author : cunyu
-
@version : 1.0
-
@email : 747731461@qq.com
-
@website : https://cunyu1943.github.io
-
@公众号 : 村雨遥
-
@date : 2021/6/20 10:07
-
@project : JavaWeb
-
@package : com.cunyu
-
@className : DeprecateTest
-
@description :
*/
public class DeprecateTest {
@Deprecated
public static void sayHello() {
System.out.println(“Hello World!”);
}
public static void newSayHello() {
System.out.println(“Hello,Welcome to Java !”);
}
public static void main(String[] args) {
sayHello();
newSayHello();
}
}
@SuppressWarnings
表示忽略警告信息,常用的值以及含义如下表:
| 值 | 描述 |
| — | — |
| deprecation
| 使用了不赞成使用的类或方法时的警告 |
| unchecked
| 使用了未经检查的转换时的警告 |
| fallthrough
| 当 switch
程序块直接通往下一种情况而没有 break
时的警告 |
| path
| 在类路径、源文件路径等中有不存在的路径时的警告 |
| serial
| 当在可序列化的类上缺少 serialVersionUID
定义时的警告 |
| finally
| 任何 finally
子句不能正常完成时的警告 |
| rawtypes
| 泛型类型未指明 |
| unused
| 引用定义了,但是没有被使用 |
| all
| 关闭以上所有情况的警告 |
package com.cunyu;
import java.util.ArrayList;
import java.util.List;
/**
-
Created with IntelliJ IDEA.
-
@author : cunyu
-
@version : 1.0
-
@email : 747731461@qq.com
-
@website : https://cunyu1943.github.io
-
@公众号 : 村雨遥
-
@date : 2021/6/20 10:07
-
@project : JavaWeb
-
@package : com.cunyu
-
@className : SuppressWarningsTest
-
@description :
*/
public class SuppressWarningsTest {
@SuppressWarnings(“unchecked”)
public static void main(String[] args) {
String item = “村雨遥”;
@SuppressWarnings(“rawtypes”)
List items = new ArrayList();
items.add(item);
System.out.println(items);
}
}
格式
我们可以使用 @interface
来自定义注解,其格式如下:
public @interface AnnotationName{
// 属性列表
……
}
一个简单的示例如下,其中 AnnoDemo
代表着我们自定义注解的名称,而 name()
、age()
、score()
则分别表示自定义注解的三个属性,而且我们利用关键字 default
对每个属性都赋予了默认值。
public @interface AnnoDemo{
String name() default “村雨遥”;
int age() default 20;
float score() default 60.0f;
}
原理
注解本质上相当于一个接口,它默认继承自 java.lang.annotation.Annotation
。
public interface AnnotationName extends java.lang.annotation.Annotation{}
参数
注解的参数类似于无参的方法,通常我们推荐用 default
来设定一个默认值,对于方法的基本要求通常有如下几点:
-
方法的返回值类型不可以是
void
; -
如果定义了方法,那么在使用时需要给方法进行赋值,赋值的规则如下:
-
若定义方法时,使用了关键字
default
对方法赋予了默认初始值,那么在使用注解时,可以不用对方法进行再次赋值; -
若只有一个方法需要赋值,且方法名为
value
,那么此时value
可以省略,直接定义值即可; -
数组赋值时,值需要用大括号
{}
包裹,若数组中只有一个值,那么此时{}
可以省略;
public @interface AnnoDemo{
String name() default “村雨遥”;
int age() default 20;
float score() default 60.0f;
}
如上述例子中,name()
、age()
、score()
就是我们自定义注解的参数。而当我们要是用该注解时,则通过如下方式来对参数进行赋值。
@AnnoDemo(name = “村雨遥”, age = 26, score = 95.0f)
public class Demo{
……
}
定义
所谓元注解(meta annotation
),就是可以用来修饰其他注解的注解。
常用的元注解
@Target
描述注解所修饰的对象范围,其取值主要有如下几种:
| 值 | 说明 |
| — | — |
| ElementType.TYPE
| 表示可以作用于类或接口 |
| ElementType.FIELD
| 表示可以作用于成员变量 |
| ElementType.METHOD
| 表示可以作用于方法 |
| ElementType.CONSTRUCTOR
| 表示可以作用于构造方法 |
| ElementType.PARAMETER
| 表示可以作用于方法的参数 |
@Target(ElementType.TYPE)
技术学习总结
学习技术一定要制定一个明确的学习路线,这样才能高效的学习,不必要做无效功,既浪费时间又得不到什么效率,大家不妨按照我这份路线来学习。
最后面试分享
大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!
| ElementType.PARAMETER
| 表示可以作用于方法的参数 |
@Target(ElementType.TYPE)
技术学习总结
学习技术一定要制定一个明确的学习路线,这样才能高效的学习,不必要做无效功,既浪费时间又得不到什么效率,大家不妨按照我这份路线来学习。
[外链图片转存中…(img-N9L8EmNj-1714739350057)]
[外链图片转存中…(img-TSLUFDgT-1714739350057)]
[外链图片转存中…(img-8GEZHxzr-1714739350057)]
最后面试分享
大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!
[外链图片转存中…(img-Uo5g9NK2-1714739350058)]
[外链图片转存中…(img-kWF2Ympu-1714739350058)]