java .class使用_Java Class getDeclaringClass()用法及代码示例

java.lang.Class类的getDeclaringClass()方法用于获取此类的声明类。如果该类或接口是另一个类的成员,则该方法返回此类的声明类。否则,此方法返回null。

用法:

public Constructor getDeclaringClass()

参数:此方法不接受任何参数。

返回值:如果该类或接口是另一个类的成员,则此方法返回该类的声明类。否则,此方法返回null。

异常如果存在安全管理器且不满足安全条件,则此方法将引发SecurityException。

下面的程序演示了getDeclaringClass()方法。

示例1:

// Java program to demonstrate getDeclaringClass() method

import java.util.*;

public class Test {

public static void main(String[] args)

throws ClassNotFoundException

{

// returns the Class object for this class

Class myClass = Class.forName("Test");

System.out.println("Class represented by myClass: "

+ myClass.toString());

// Get the declaring class of myClass

// using getDeclaringClass() constructor

System.out.println("DeclaringClass of myClass: "

+ myClass.getDeclaringClass());

}

}

输出:

Class represented by myClass: class Test

DeclaringClass of myClass: null

示例1:

// Java program to demonstrate getDeclaringClass() method

import java.util.*;

class Main {

class Arr {

};

public Object obj;

Main()

{

obj = new Arr();

}

public static void main(String[] args)

throws ClassNotFoundException

{

Main t = new Main();

// returns the Class object

Class myClass = t.obj.getClass();

// Get the declaring class of myClass

// using getDeclaringClass() constructor

System.out.println("DeclaringClass of myClass: "

+ myClass.getDeclaringClass());

}

}

输出:

DeclaringClass of myClass: class Main

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 的环绕通知中,可以使用 ProceedingJoinPoint 对象的 proceed() 方法来执行目标方法,并且可以获取目标方法的返回值。如果目标方法执行时抛出了异常,并且有对应的异常处理方法(如 @ExceptionHandler 注解所标注的方法),则可以在环绕通知中捕获该异常,并且调用异常处理方法返回的值。 以下是一个示例代码: ```java @Around("execution(* com.example.MyController.*(..))") public Object aroundAdvice(ProceedingJoinPoint joinPoint) throws Throwable { Object result = null; try { result = joinPoint.proceed(); // 执行目标方法,获取返回值 } catch (Exception e) { // 捕获目标方法抛出的异常,并且调用异常处理方法 MethodSignature signature = (MethodSignature) joinPoint.getSignature(); Method method = signature.getMethod(); if (method.isAnnotationPresent(ExceptionHandler.class)) { ExceptionHandler exceptionHandler = method.getAnnotation(ExceptionHandler.class); Class<?>[] exceptions = exceptionHandler.value(); for (Class<?> exception : exceptions) { if (exception.isAssignableFrom(e.getClass())) { Object handler = applicationContext.getBean(method.getDeclaringClass()); result = method.invoke(handler, e); break; } } } else { throw e; // 没有对应的异常处理方法,继续抛出异常 } } return result; } ``` 在上述代码中,我们首先通过 ProceedingJoinPoint 对象的 proceed() 方法执行目标方法,并且获取目标方法的返回值。如果目标方法执行时抛出了异常,我们会捕获该异常,并且调用对应的异常处理方法。在调用异常处理方法时,我们需要使用反射来获取该方法,并且通过 invoke() 方法来调用该方法并且获取返回值。最终,我们将返回值返回给调用方。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值