精华内容
下载资源
问答
  • java注解

    2021-02-27 16:31:23
    注解:元注解的作用就是负责注解...Java5.0定义的元注解:1.@Target,2.@Retention,3.@Documented,4.@Inherited这些类型和它们所支持的类在java.lang.annotation包中可以找到。下面我们看一下每个元注解的作用和...

    元注解:

    元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解:

    1.@Target,

    2.@Retention,

    3.@Documented,

    4.@Inherited

    这些类型和它们所支持的类在java.lang.annotation包中可以找到。下面我们看一下每个元注解的作用和相应分参数的使用说明。

    @Target:

    @Target说明了Annotation所修饰的对象范围:Annotation可被用于 packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在Annotation类型的声明中使用了target可更加明晰其修饰的目标。

    作用:用于描述注解的使用范围(即:被描述的注解可以用在什么地方)

    取值(ElementType)有:

    1.CONSTRUCTOR:用于描述构造器

    2.FIELD:用于描述域

    3.LOCAL_VARIABLE:用于描述局部变量

    4.METHOD:用于描述方法

    5.PACKAGE:用于描述包

    6.PARAMETER:用于描述参数

    7.TYPE:用于描述类、接口(包括注解类型) 或enum声明

    使用实例:

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    @Target(ElementType.TYPE)

    public @interface Table {

    /**

    * 数据表名称注解,默认值为类名称

    * @return

    */

    public String tableName() default "className";

    }

    @Target(ElementType.FIELD)

    public @interface NoDBColumn {

    }

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    注解Table 可以用于注解类、接口(包括注解类型) 或enum声明,而注解NoDBColumn仅可用于注解类的成员变量。

    @Retention:

    @Retention定义了该Annotation被保留的时间长短:某些Annotation仅出现在源代码中,而被编译器丢弃;而另一些却被编译在class文件中;编译在class文件中的Annotation可能会被虚拟机忽略,而另一些在class被装载时将被读取(请注意并不影响class的执行,因为Annotation与class在使用上是被分离的)。使用这个meta-Annotation可以对 Annotation的“生命周期”限制。

    作用:表示需要在什么级别保存该注释信息,用于描述注解的生命周期(即:被描述的注解在什么范围内有效)

    取值(RetentionPoicy)有:

    1.SOURCE:在源文件中有效(即源文件保留)

    2.CLASS:在class文件中有效(即class保留)

    3.RUNTIME:在运行时有效(即运行时保留)

    Retention meta-annotation类型有唯一的value作为成员,它的取值来自java.lang.annotation.RetentionPolicy的枚举类型值。具体实例如下:

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    @Target(ElementType.FIELD)

    @Retention(RetentionPolicy.RUNTIME)

    public @interface Column {

    public String name() default "fieldName";

    public String setFuncName() default "setField";

    public String getFuncName() default "getField";

    public boolean defaultDBValue() default false;

    }

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    Column注解的的RetentionPolicy的属性值是RUTIME,这样注解处理器可以通过反射,获取到该注解的属性值,从而去做一些运行时的逻辑处理

    @Documented:

    @Documented用于描述其它类型的annotation应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化。Documented是一个标记注解,没有成员。

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    @Target(ElementType.FIELD)

    @Retention(RetentionPolicy.RUNTIME)

    @Documented

    public @interface Column {

    public String name() default "fieldName";

    public String setFuncName() default "setField";

    public String getFuncName() default "getField";

    public boolean defaultDBValue() default false;

    }

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    @Inherited:

    @Inherited 元注解是一个标记注解,@Inherited阐述了某个被标注的类型是被继承的。如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。

    注意:@Inherited annotation类型是被标注过的class的子类所继承。类并不从它所实现的接口继承annotation,方法并不从它所重载的方法继承annotation。

    当@Inherited annotation类型标注的annotation的Retention是RetentionPolicy.RUNTIME,则反射API增强了这种继承性。如果我们使用java.lang.reflect去查询一个@Inherited annotation类型的annotation时,反射代码检查将展开工作:检查class和其父类,直到发现指定的annotation类型被发现,或者到达类继承结构的顶层。

    实例代码:

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    /**

    *

    * @author peida

    *

    */

    @Inherited

    public @interface Greeting {

    public enum FontColor{ BULE,RED,GREEN};

    String name();

    FontColor fontColor() default FontColor.GREEN;

    }

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    自定义注解:

    使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口,由编译程序自动完成其他细节。在定义注解时,不能继承其他的注解或接口。@interface用来声明一个注解,其中的每一个方法实际上是声明了一个配置参数。方法的名称就是参数的名称,返回值类型就是参数的类型(返回值类型只能是基本类型、Class、String、enum)。可以通过default来声明参数的默认值。

    定义注解格式:

    public @interface 注解名 {定义体}

    注解参数的可支持数据类型:

    1.所有基本数据类型(int,float,boolean,byte,double,char,long,short)

    2.String类型

    3.Class类型

    4.enum类型

    5.Annotation类型

    6.以上所有类型的数组

    Annotation类型里面的参数该怎么设定:

    第一,只能用public或默认(default)这两个访问权修饰.例如,String value();这里把方法设为defaul默认类型;

    第二,参数成员只能用基本类型byte,short,char,int,long,float,double,boolean八种基本数据类型和

    String,Enum,Class,annotations等数据类型,以及这一些类型的数组.例如,String

    value();这里的参数成员就为String;

    第三,如果只有一个参数成员,最好把参数名称设为"value",后加小括号.例:下面的例子FruitName注解就只有一个参数成员。

    简单的自定义注解和使用注解实例:

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    package annotation;

    import java.lang.annotation.Documented;

    import java.lang.annotation.ElementType;

    import java.lang.annotation.Retention;

    import java.lang.annotation.RetentionPolicy;

    import java.lang.annotation.Target;

    /**

    * 水果名称注解

    * @author peida

    *

    */

    @Target(ElementType.FIELD)

    @Retention(RetentionPolicy.RUNTIME)

    @Documented

    public @interface FruitName {

    String value() default "";

    }

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    package annotation;

    import java.lang.annotation.Documented;

    import java.lang.annotation.ElementType;

    import java.lang.annotation.Retention;

    import java.lang.annotation.RetentionPolicy;

    import java.lang.annotation.Target;

    /**

    * 水果颜色注解

    * @author peida

    *

    */

    @Target(ElementType.FIELD)

    @Retention(RetentionPolicy.RUNTIME)

    @Documented

    public @interface FruitColor {

    /**

    * 颜色枚举

    * @author peida

    *

    */

    public enum Color{ BULE,RED,GREEN};

    /**

    * 颜色属性

    * @return

    */

    Color fruitColor() default Color.GREEN;

    }

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    package annotation;

    import annotation.FruitColor.Color;

    public class Apple {

    @FruitName("Apple")

    private String appleName;

    @FruitColor(fruitColor=Color.RED)

    private String appleColor;

    public void setAppleColor(String appleColor) {

    this.appleColor = appleColor;

    }

    public String getAppleColor() {

    return appleColor;

    }

    public void setAppleName(String appleName) {

    this.appleName = appleName;

    }

    public String getAppleName() {

    return appleName;

    }

    public void displayName(){

    System.out.println("水果的名字是:苹果");

    }

    }

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    注解元素的默认值:

    注解元素必须有确定的值,要么在定义注解的默认值中指定,要么在使用注解时指定,非基本类型的注解元素的值不可为null。因此, 使用空字符串或0作为默认值是一种常用的做法。这个约束使得处理器很难表现一个元素的存在或缺失的状态,因为每个注解的声明中,所有元素都存在,并且都具有相应的值,为了绕开这个约束,我们只能定义一些特殊的值,例如空字符串或者负数,一次表示某个元素不存在,在定义注解时,这已经成为一个习惯用法。例如:

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    1 package annotation;

    2

    3 import java.lang.annotation.Documented;

    4 import java.lang.annotation.ElementType;

    5 import java.lang.annotation.Retention;

    6 import java.lang.annotation.RetentionPolicy;

    7 import java.lang.annotation.Target;

    8

    9 /**

    10 * 水果供应者注解

    11 * @author peida

    12 *

    13 */

    14 @Target(ElementType.FIELD)

    15 @Retention(RetentionPolicy.RUNTIME)

    16 @Documented

    17 public @interface FruitProvider {

    18 /**

    19 * 供应商编号

    20 * @return

    21 */

    22 public int id() default -1;

    23

    24 /**

    25 * 供应商名称

    26 * @return

    27 */

    28 public String name() default "";

    29

    30 /**

    31 * 供应商地址

    32 * @return

    33 */

    34 public String address() default "";

    35 }

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    定义了注解,并在需要的时候给相关类,类属性加上注解信息,如果没有响应的注解信息处理流程,注解可以说是没有实用价值。如何让注解真真的发挥作用,主要就在于注解处理方法,下一步我们将学习注解信息的获取和处理!

    展开全文
  • Java自定义注解

    2021-03-14 13:03:31
    package ...import java.lang.annotation.Documented;import java.lang.annotation.Inherited;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;@Retentio...

    package com.what21.jdk15.demo02;

    import java.lang.annotation.Documented;

    import java.lang.annotation.Inherited;

    import java.lang.annotation.Retention;

    import java.lang.annotation.RetentionPolicy;

    @Retention(RetentionPolicy.RUNTIME)

    @Documented

    @Inherited

    public @interface Property {

    /**

    * 默认值为""

    *

    * @return

    */

    String name() default "";

    /**

    * 默认值为""

    *

    * @return

    */

    String value() default "";

    }

    package com.what21.jdk15.demo02;

    import java.lang.annotation.Annotation;

    @Property(name = "class")

    public class AnnotationDemo {

    @Property(name = "field", value = "test")

    public String test;

    @Property(name = "method", value = "test")

    public static void test() {

    System.out.println("test()");

    }

    /**

    * @param args

    * @throws Exception

    */

    public static void main(String[] args) throws Exception {

    // ========获取类的注解========

    Annotation classAno = AnnotationDemo.class

    .getAnnotation(Property.class);

    System.out.println(classAno);

    // ========获取字段的注解========

    Annotation fieldAno = AnnotationDemo.class.getField("test")

    .getAnnotation(Property.class);

    System.out.println(fieldAno);

    // ========获取方法的注解========

    Annotation methodAno = AnnotationDemo.class.getMethod("test")

    .getAnnotation(Property.class);

    System.out.println(methodAno);

    }

    }

    展开全文
  • java注解详解

    2021-03-09 17:46:03
    1.了解注解我们有必要对JDK 5.0新增的注解(Annotation)技术进行简单的学习,因为Spring ...对于Java开发人员来说,在编写代码时,除了源程序以外,我们还会使用 Javadoc标签对类、方法或成员变量进行注释,以便使...

    1.  了解注解

    我们有必要对JDK 5.0新增的注解(Annotation)技术进行简单的学习,因为Spring 支持@AspectJ,而@AspectJ本身就是基于JDK 5.0的注解技术。所以学习JDK 5.0的注解知识有助于我们更好地理解和掌握Spring的AOP技术。

    对于Java开发人员来说,在编写代码时,除了源程序以外,我们还会使用 Javadoc标签对类、方法或成员变量进行注释,以便使用Javadoc工具生成和源代码配套的Javadoc文档。这些@param、@return 等Javadoc标签就是注解标签,它们为第三方工具提供了描述程序代码的注释信息。使用过Xdoclet的朋友,对此将更有感触,像Struts、 Hibernate都提供了Xdoclet标签,使用它们可以快速地生成对应程序代码的配置文件。

    JDK5.0注解可以看成是Javadoc标签和Xdoclet标签的延伸和发展。在JDK5.0中,我们可以自定义这些标签,并通过Java语言的反射机制中获取类中标注的注解,完成特定的功能。

    注解是代码的附属信息,它遵循一个基本原则:注解不能直接干扰程序代码的运行,无论增加或删除注解,代码都能够正常运行。Java语言解释器会忽略这些注解,而由第三方工具负责对注解进行处理。第三方工具可以利用代码中的注解间接控制程序代码的运行,它们通过Java反射机制读取注解的信息,并根据这些信息更改目标程序的逻辑,而这正是Spring AOP对@AspectJ提供支持所采取的方法。

    注解的语法比较简单,除了@符号的使用以外,它基本上与java的固有语法一致,java内置了三种注解,定义在java.lang包中。

    @Override:只能用在方法之上的,用来告诉别人这一个方法是改写父类的。

    @Deprecated:建议别人不要使用旧的API的时候用的,编译的时候会用产生警告信息,可以设定在程序里的所有的元素上。

    @SuppressWarnings:表示关闭一些不当的编译器警告信息。

    2.  定义注解

    下面是一个定义注解的实例。

    @Target(ElementType.TYPE)

    @Retention(RetentionPolicy.RUNTIME)

    @Documented

    @Inherited

    public @interface Description {

    String value();

    }

    其中的@interface是一个关键字,在设计annotations的时候必须把一个类型定义为@interface,而不能用class或interface关键字。所有的注解类都隐式继承于 java.lang.annotation.Annotation,注解不允许显式继承于其他的接口。

    一个注解可以拥有多个成员,成员声明和接口方法声明类似,这里,我们仅定义了一个成员,成员的声明有以下几点限制:

    a)   成员以无入参无抛出异常的方式声明,如boolean value(String str)、boolean value() throws Exception等方式是非法的;

    b)   可以通过default为成员指定一个默认值,如String level() default "LOW_LEVEL"、int high() default 2是合法的,当然也可以不指定默认值;

    c)   成员类型是受限的,合法的类型包括原始类型及其封装类、String、Class、enums、注解类型,以及上述类型的数组类型。如ForumService value()、List foo()是非法的。

    d)   如果注解只有一个成员,则成员名必须取名为value(),在使用时可以忽略成员名和赋值号(=),如@Description("使用注解的实例")。注解类拥有多个成员时,如果仅对value成员进行赋值则也可不使用赋值号,如果同时对多个成员进行赋值,则必须使用赋值号,如@DeclareParents (value = "NaiveWaiter", defaultImpl = SmartSeller.class)。

    e)   注解类可以没有成员,没有成员的注解称为标识注解,解释程序以标识注解存在与否进行相应的处理;

    注解定义包含四个元注解,分别为@Target,@Retention,@Documented,@Inherited。各元注解的作用如下:

    1)  @Target

    表示该注解用于什么地方,可能的 ElemenetType 参数包括:

    Ø  ElemenetType.CONSTRUCTOR 构造器声明。

    Ø  ElemenetType.FIELD 域声明(包括 enum 实例)。

    Ø  ElemenetType.LOCAL_VARIABLE 局部变量声明。

    Ø  ElemenetType.METHOD 方法声明。

    Ø  ElemenetType.PACKAGE 包声明。

    Ø  ElemenetType.PARAMETER 参数声明。

    Ø  ElemenetType.TYPE 类,接口(包括注解类型)或enum声明。

    2)  @Retention

    表示在什么级别保存该注解信息。可选的 RetentionPolicy 参数包括:

    Ø  RetentionPolicy.SOURCE 注解将被编译器丢弃。

    Ø  RetentionPolicy.CLASS 注解在class文件中可用,但会被VM丢弃。

    Ø  RetentionPolicy.RUNTIME VM将在运行期也保留注释,因此可以通过反射机制读取注解的信息。

    举一个例子,如@Override里面的Retention设为SOURCE,编译成功了就不要这一些检查的信息,相反,@Deprecated里面的Retention设为RUNTIME,表示除了在编译时会警告我们使用了哪个被 Deprecated的方法,在执行的时候也可以查出该方法是否被Deprecated。

    3)  @Documented

    将此注解包含在 javadoc 中

    4)  @Inherited

    允许子类继承父类中的注解

    3.  使用注解

    下面是一个使用注解注解的实例。

    @Description(value="使用注解的实例")

    public class TestAnnotation {

    }

    使用注解的语法:@(=,=,...)

    如果成员是数组类型,可以通过{}进行赋值,如boolean数组的成员可以设置为{true,false,true}。下面是几个注解标注的例子:

    1)   多成员的注解

    @AnnoExample(id= 2868724, synopsis = "Enable time-travel", engineer = "Mr. Peabody")

    2)   一个成员的注解,成员名为value

    可以省略成员名和赋值符号:@Copyright("Right Reserved")

    @Copyright("2011 bookegou.com All Right Reserved")

    3)   无成员的注解

    @Override

    @Override

    4)   成员为字符串数组的注解

    @SuppressWarnings(value={"unchecked","fallthrough"})

    @SuppressWarnings(value={"unchecked","fallthrough"})

    5)   成员为注解数组类型的注解

    @Reviews({@Review(grade=Review.Grade.EXCELLENT,reviewer="df"),

    @Review(grade=Review.Grade.UNSATISFACTORY,reviewer="eg",

    comment="This method needs an @Override annotation")})

    @Reviews({@Review(grade=Review.Grade.EXCELLENT,reviewer="df"),

    @Review(grade=Review.Grade.UNSATISFACTORY,reviewer="eg",

    comment="This method needs an @Override annotation")})

    @Reviews注解拥有一个@Review注解数组类型的成员,@Review注解类型有三个成员,其中reviewer、comment都是String类型,但comment有默认值,grade是枚举类型的成员。

    4.  解析注解

    下面是一个解析注解的实例。

    public class ParseAnnotation {

    public static void main(String[] args) throws Exception{

    final Class cls = Class.forName("com.annotation.TestAnnotation");

    final Method[] method = cls.getMethods();

    // 判断是否有指定注解类型的注解

    if(cls.isAnnotationPresent(Description.class)) {

    // 根据注解类型返回指定类型的注解

    Description des = (Description)cls.getAnnotation(Description.class);

    System.out.println("注解描述:" + des.value());

    }

    }

    }

    输出结果如下:

    注解描述:使用注解的实例

    前面提到过,注解不会直接影响程序的运行,但是第三方程序或工具可以利用代码中的注解完成特殊的任务,间接控制程序的运行。对于RetentionPolicy.RUNTIME保留期限的注解,我们可以通过反射机制访问类中的注解。

    在JDK5.0里,Package、Class、Constructor、 Method以及Field等反射对象都新增了访问注解信息的方法:T getAnnotation(Class annotationClass),该方法支持通过泛型直接返回注解对象。

    下面为一个例子:

    1、定义一个注解

    package annotation;

    import java.lang.annotation.ElementType;

    import java.lang.annotation.Retention;

    import java.lang.annotation.RetentionPolicy;

    import java.lang.annotation.Target;

    /**

    * 定义一个注解

    *

    *

    * @author jiqinlin

    *

    */

    //Java中提供了四种元注解,专门负责注解其他的注解,分别如下

    //@Retention元注解,表示需要在什么级别保存该注释信息(生命周期)。可选的RetentionPoicy参数包括:

    //RetentionPolicy.SOURCE: 停留在java源文件,编译器被丢掉

    //RetentionPolicy.CLASS:停留在class文件中,但会被VM丢弃(默认)

    //RetentionPolicy.RUNTIME:内存中的字节码,VM将在运行时也保留注解,因此可以通过反射机制读取注解的信息

    //@Target元注解,默认值为任何元素,表示该注解用于什么地方。可用的ElementType参数包括

    //ElementType.CONSTRUCTOR: 构造器声明

    //ElementType.FIELD: 成员变量、对象、属性(包括enum实例)

    //ElementType.LOCAL_VARIABLE: 局部变量声明

    //ElementType.METHOD: 方法声明

    //ElementType.PACKAGE: 包声明

    //ElementType.PARAMETER: 参数声明

    //ElementType.TYPE: 类、接口(包括注解类型)或enum声明

    //@Documented将注解包含在JavaDoc中

    //@Inheried允许子类继承父类中的注解

    @Retention(RetentionPolicy.RUNTIME)

    @Target({ElementType.METHOD, ElementType.TYPE})

    public @interface MyAnnotation {

    // 为注解添加属性

    String color();

    String value() default "我是aaa"; // 为属性提供默认值

    int[] array() default { 1, 2, 3 };

    Gender gender() default Gender.MAN; // 添加一个枚举

    MetaAnnotation metaAnnotation() default @MetaAnnotation(birthday = "我的出身日期为1988-2-18");

    }

    2、定义依赖项

    package annotation;

    /**

    * 枚举,模拟注解中添加枚举属性

    *

    *

    *

    */

    public enum Gender {

    MAN {

    public String getName() {

    return "男";

    }

    },

    WOMEN {

    public String getName() {

    return "女";

    }

    }; // 记得有“;”

    public abstract String getName();

    }

    package annotation;

    /**

    * 定义一个注解,模拟注解中添加注解属性

    *

    *

    *

    */

    public @interface MetaAnnotation {

    String birthday();

    }

    3、定义测试程序

    package annotation;

    //调用注解并赋值

    @MyAnnotation(metaAnnotation=@MetaAnnotation(birthday = "我的出身日期为1988-2-18"),color="red", array={23, 26})

    public class AnnotationTest {

    public static void main(String[] args) {

    // 检查类AnnotationTest是否含有@MyAnnotation注解

    if (AnnotationTest.class.isAnnotationPresent(MyAnnotation.class)) {

    // 若存在就获取注解

    MyAnnotation annotation = (MyAnnotation) AnnotationTest.class

    .getAnnotation(MyAnnotation.class);

    System.out.println(annotation);

    // 获取注解属性

    System.out.println(annotation.color());

    System.out.println(annotation.value());

    // 数组

    int[] arrs = annotation.array();

    for (int arr : arrs) {

    System.out.println(arr);

    }

    // 枚举

    Gender gender = annotation.gender();

    System.out.println("性别为:" + gender);

    // 获取注解属性

    MetaAnnotation meta = annotation.metaAnnotation();

    System.out.println(meta.birthday());

    }

    }

    }

    附一张别人总结的思维导图:

    764feada0d495145edc209c121ec8e86.png

    展开全文
  • 一、CLASS_PATH的使用我们在安装jdk的时候,通常情况下只是在电脑的环境变量中新建一个系统变量JAVA_HOME,这个变量用于储存jdk的/bin文件夹之前路径,然后在path中使用这个系统变量,%JAVA_HOME%\bin,这样就配置好...

    一、CLASS_PATH的使用

    我们在安装jdk的时候,通常情况下只是在电脑的环境变量中新建一个系统变量JAVA_HOME,这个变量用于储存jdk的/bin文件夹之前路径,然后在path中使用这个系统变量,%JAVA_HOME%\bin,这样就配置好了,一般这时候我们就可以正常编写并运行java程序了;

    这个时候我们来说一下CLASS_PATH的用于,之所以我们一开始不用配CLASS_PATH,程序也能正常编译执行,是因为CLASS_PATH有默认值,那就是".",即当前目录。

    如下图所示,在指定文件夹创建一个Hello.java文件,然后使用javac命令编译该程序,生成对应的class文件后,再在当前目录下使用java命令解释运行该程序

    49818769132fb2407c1c42a5d8081aa8.png

    如果这时切换到其他目录,执行java Hello 命令就会报错

    63cf382b0da1bd8aca3dc2e4114094bc.png

    如果是jdk9的话,会报 classnotfound的错误,造成这种错误的原因是因为:你在执行java Hello命令的时候,jvm会到你执行该命令的当前文件夹中找到名字为Hello的字节码文件并加载,因为没有找到,所以会报错,因为CLASS_PATH的默认值是当前路径下,如果你想要不报错,那就在系统环境变量中新建一个CLASS_PATH,将其值设置为存放java程序字节码文件的路径,配置完成后,关掉其命令行,再次打开,无论在哪个路径下执行java Hello命令,都不会报错,都能正确输出结果;虽然这样能使程序正常运行,但是我们并不推荐这样做,因为一旦你设置了CLASS_PATH的值之后,你所有的字节码文件都需要放到指定的路径下,这就会在你开发过程中造成很大的麻烦,所以建议不要改变CLASS_PATH的值,让其使用默认值,可以免去开发过程中不必要的麻烦。

    二、注释的使用

    在团队开发过程中,在代码中添加注释是非常有必要的,增加注释会使你的代码具有高的可读性,对于团队开发来说,非常有必要。

    注释分为三种:单行注释、多行注释和文档注释、

    单行注释:用"//"表示,一般用与单行代码的注释与说明

    多行注释:用"/* ....  */"表示,一般用于方法的注释与说明

    文档注释:用"/** ... */"表示,一般用于方法或者类上的注释与说明

    注:在java编译过程中,注释是不会编译进去的,不会影响程序。

    展开全文
  • import java.lang.annotation.ElementType; /** * @author :fly * @description: 所有类的Class类型 * @date :2021/10/27 16:26 */ public class AllClasses { public static void main(String[] args) {
  • Java常用类与方法注解

    2021-02-27 15:34:57
    原标题:Java常用类与方法注解 前言学习Java的小伙伴们,相信有一部分对于Java常用类与方法的掌握并不是很理想,在这里小编帮助各位小伙伴们将这类知识在巩固一下。正文@Target表示注解能放在什么位置上ElementType....
  • 最近新做了一个资产管理系统,因为字段比较...就索性用了反射机制来处理,几行代码搞定先把这个java bean贴一部分的感受下....将近400行,我用的还是getter和setter注解,里面全是一个个的参数.... 下面贴下代码,file上...
  • java-class文件批量转java文件

    千次阅读 2021-02-13 00:11:03
    1.首先下载jad转换工具:https://varaneckas.com/jad,我的电脑是window10,选第一个下载2.输入cmd,打开cmd命令窗口,输入命令cd /d D:\workSpace\jad158g....接着输入命令 jad -o -r -s java -d src classes/**/*...
  • javaclass什么意思?

    千次阅读 2021-02-12 11:13:31
    class的意思为“类”,是java中的一个类,是定义一个特定类的实现,存在于java.lang包中,它的构造函数是私有的,由JVM(类加载器)创建Class对象,可以通过getClass()方法获取到Class对象。class是一个类,存在于java...
  • java注解基础

    2021-04-17 06:11:25
    一:元注解注解的作用就是负责注解其他注解1.@Target说明:用来指明注解所修饰的目标,包括packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量...
  • [ 用大白话讲解复杂的技术 ]这是我的第41篇原创文章作者 l 会点代码的大叔(CodeDaShu)今天,我们来聊聊 Java注解。01注解的概念Annotation(注解):先看看官方给出的概念,注解Java 提供的一种对元程序中元素...
  • Java 注解

    2021-02-28 16:00:55
    注解的使用形式:一个java注解由一个@符后面跟一个字符串构成,类似于这样:@Entityjava注解中一般包含一些元素,这些元素类似于属性或者参数,可以用来设置值,比如我们有一个包含两个元素的@Enti...
  • 注释注解JAVA注解

    2021-02-25 18:55:11
    发一下牢骚和主题无关...import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;@Retention(RetentionPolicy.RUNTIME)public @interface MyAnnotation {String value();}package ann...
  • Java注解

    2021-03-06 16:03:23
    Java注解是什么?在Java中的注解允许将元数据与程序元素相关联。程序元素可以是包,类,接口,类的字段,局部变量,方法,方法的参数,枚举,注解,通用类型/方法声明中的类型参数等等。可以在Java程序中注解任何...
  • Java注释

    千次阅读 2021-02-28 16:01:29
    Java提供3种注释方式:。单行注释://多行注释/**/文档注释:/***文档注释用于从源代码自动生成文档执行javadoc*命名根据源代码中的内容生成网页*@XXX */不同格式的注释可以嵌套。// Welcome1.java. Text-printing ...
  • 文中部分内容来自网络搜索,侵删在java的帮助文档中,java.lang包中有一个Class类,注意这里的"C“是大写,所以这个不是表示类的声明,而是一个真正的类。在java的帮助文档中,这样定义的Class类:public final ...
  • Java语言Class文件是什么Class 类是在Java语言中定义一个特定类的实现,下面我们来具体了解Java语言Class文件是什么,欢迎大家阅读!Java语言Class文件是什么一,class类有什么用?class类的实例表示java应用运行时的...
  • java基础之:java注解

    2021-03-14 02:18:21
    一:元注解注解的作用就是负责注解...Java5.0定义的元注解:1.@Target,2.@Retention,3.@Documented,4.@Inherited这些类型和它们所支持的类在java.lang.annotation包中可以找到。下面我们看一下每个元注解的作用...
  • 一个程序的可读性,关键点就在于注释,下面要给大家讲到的就是Java注释方面的知识,主要会介绍java注释注释一般必须放在所有的“import”语句之后,类定义之前,主要声明该类可以做什么,以及创建者、创建日期、...
  • Java注解配置

    2021-03-04 01:49:49
    Java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。包含在 java.lang.annotation 包中。四个元注解...
  • Java注解有哪些?

    2021-03-01 08:38:26
    基本语法注解Java 5 所引入的众多语言变化之一,是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用,包含...
  • Java注解类型

    2021-04-15 19:19:08
    本文概述Java注释是表示元数据的标签, 即附加有类, 接口, 方法或字段的元数据, 以指示Java编译器和JVM可以使用的一些附加信息。Java中的注释用于提供其他信息, 因此它是XML和Java标记接口的替代选项。首先, 我们将...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 892,117
精华内容 356,846
关键字:

java注解class

java 订阅