java 变量 amp_Java 注解入门实例 && 注解传參

參考

概念:java提供了一种原程序中的元素关联不论什么信息和不论什么元数据的途径和方法

JDK内置系统注解:

@Override 用于修饰此方法覆盖了父类的方法;

@Deprecated 用于修饰已经过时的方法;

@Suppvisewarnings 用于通知java编译器禁止特定的编译警告。

e690ec4f646e6e2c0e8ad523a9c202cf.png

注解依照执行机制划分

源代码注解:注解仅仅在源代码中存在,编译成.class文件就不存在了;

编译时注解:注解在源代码和.class文件里都存在(例:JDK自带注解);

执行时注解:在执行阶段还起作用,甚至会影响执行逻辑的注解(Autowired);

自己定义注解的元注解:

@Target—作用域(constructor(构造方法声明),field(字段声明)。local_variable(局部变量声明),method(方法声明)。package(包声明),parameter(參数声明),type(类,接口声明))

@Retention—生命周期(source:仅仅在源代码显示,编译时会丢弃。

class:编译时会记录到class中。执行时忽略。runtime:执行时存在。能够通过反射读取)

Inherited—标识注解(同意子类继承)

Documented—生成Javadoc

若成员仅仅有一个,必须为value,这个參数赋值能够不写value=XXX

662e99672a6e51d65bdc83b0e9f54edb.png

73c2bbc1200a7a0d05dd1dc28dd5c411.png

成员以无參无异常方式声明。

成员类型是受限的,合法的类型包含原始类型及String,Class,Annotation, Enumeration.

上面用了注解,程序中获得注解信息的方法是反射。

Class cls = Class.forName(“”);//使用类载入器载入类

cls.isAnnotationPresent(xx.class);//推断cls这个类上是否有xx的注解,找到类上注解

xx a = (xx)cls.getAnnotation(xx.class);//取得其上的注解

以下附一个实例。是框架怎样使用注解描写叙述參数。

结构图

cfaa3c5e671f0bbf5394a0b75f06a931.png

A.java

package javaBasic;

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;

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

@Retention(RetentionPolicy.RUNTIME)

@Documented

public @interface A {

String value();

String name() default "bingone";

int age() default 20;

}

B.java

package javaBasic;

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;

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

@Retention(RetentionPolicy.RUNTIME)

@Documented

public @interface B {

String value();

String name() default "bingone";

}

DataClass.java

package javaBasic;

public class DataClass {

public String name;

public int age;

public DataClass(String name, int age) {

super();

this.name = name;

this.age = age;

}

}

RunClass.java

package javaBasic;

public class RunClass {

public static void run(@A("str") String str,@B("age")int age){

System.out.println("In run Method str:" + str + "age:" + age);

}

}

TestClass.java

package javaBasic;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.lang.annotation.Annotation;

import java.lang.reflect.Method;

/**

* 通过注解传參数

*@author gg_gogoing

*

*/

public class TestClass {

public static void parseMethod(DataClass data,Object obj,String mthname){

//验证是否有注解

//若有则两种方法:

//1. 在编译时刻已经有了相应的表,查表就可以

//2. 例如以下的遍历方式。

if(obj instanceof RunClass){

String str = null;

int age = 0;

Method [] methods = (Method[])obj.getClass().getMethods();

for(Method method :methods){

if(method.getName().equals(mthname)){

Annotation[][] annotations = method.getParameterAnnotations();

for(Annotation[] tt : annotations){

for(Annotation t:tt){

if(t instanceof A){

str = data.name;

}else if(t instanceof B){

age = data.age;

}

}

}

RunClass.run(str, age);

}

}

}

}

public static void main(String[] args) throws Exception, RuntimeException { // 主方法

//不直接传參数,而是将一个类中的数据传入

DataClass dc = new DataClass("gg_gogoing", 20);

parseMethod(dc, new RunClass(), "run");

}

}

6bb4285a66c0c603145673464f02e7d8.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Windows 环境中,Java 程序默认会读取系统中定义的环境变量来配置运行参数。而在 Arthas 工具运行时,如果发现系统中没有定义名为 "java_tool_options" 的环境变量,就会报错提示该变量未定义。 Java_tool_options 环境变量是为 Java 应用程序提供额外的运行参数配置的一种方式。它可以用来设置 JVM 的启动参数,例如堆大小、GC 设置、系统属性等等。通过设置该环境变量,我们可以方便地为 Java 应用程序配置各种运行参数,以满足特定需求。 然而,在系统中可能会出现 "java_tool_options" 环境变量未定义的情况。这可能是因为在安装 Java 或其他相关软件时,没有自动创建该环境变量,也可能是因为用户手动删除了该环境变量。 要解决这个问题,您可以手动创建 "java_tool_options" 环境变量,并设置其值为您希望的 Java 运行参数。可以按照以下步骤进行操作: 1. 右键点击 "我的电脑"(或 "此电脑")图标,选择 "属性"。 2. 在系统属性窗口中,点击 "高级系统设置"。 3. 在系统属性对话框中,点击 "环境变量" 按钮。 4. 在用户变量或系统变量部分(根据您的需求选择),找到 "java_tool_options" 变量(如果没有找到,则需要点击 "新建" 按钮创建新的变量)。 5. 双击 "java_tool_options" 变量,设置它的值为您期望的 Java 运行参数。 6. 点击 "确定" 保存更改。 现在,您应该可以在 Arthas 工具中正常运行了,因为系统中已经定义了 "java_tool_options" 环境变量并配置了相应的参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值