小编典典

你可以生成堆栈跟踪并使用StackTraceElements中的信息。

例如,实用程序类可以为你返回调用类名称:

public class KDebug {

public static String getCallerClassName() {

StackTraceElement[] stElements = Thread.currentThread().getStackTrace();

for (int i=1; i

StackTraceElement ste = stElements[i];

if (!ste.getClassName().equals(KDebug.class.getName()) && ste.getClassName().indexOf("java.lang.Thread")!=0) {

return ste.getClassName();

}

}

return null;

}

}

如果你调用KDebug.getCallerClassName()从bar(),你会得到"foo"。

现在假设你想知道方法调用的类bar(这会更有趣,也许你真正想要的是)。你可以使用以下方法:

public static String getCallerCallerClassName() {

StackTraceElement[] stElements = Thread.currentThread().getStackTrace();

String callerClassName = null;

for (int i=1; i

StackTraceElement ste = stElements[i];

if (!ste.getClassName().equals(KDebug.class.getName())&& ste.getClassName().indexOf("java.lang.Thread")!=0) {

if (callerClassName==null) {

callerClassName = ste.getClassName();

} else if (!callerClassName.equals(ste.getClassName())) {

return ste.getClassName();

}

}

}

return null;

}

这是用于调试吗?如果没有,可能有一个更好的解决方案。

2020-03-22

java中调用_如何获取Java中的调用方类相关推荐

  1. java 事件通知_正确获取Java事件通知

    java 事件通知 实现观察者模式以提供Java事件通知似乎是一件容易的事. 但是,容易陷入一些陷阱. 这是我在各种场合不慎造成的常见错误的解释-- Java事件通知 让我们从一个简单的bean St ...

  2. java 对象地址_如何获取Java对象的地址?

    有没有办法获取Java对象的地址? 问题来自哪里?:首先,我读取属性文件,并将文件中的所有数据放入表中.属性文件可以更新.所以,我想听那个文件.我使用PropertyChangeSupport和Pro ...

  3. java 内存跟踪_详解JVM中的本机内存跟踪

    1.概述 有没有想过为什么Java应用程序通过众所周知的-Xms和-Xmx调优标志消耗的内存比指定数量多得多?出于各种原因和可能的优化,JVM可以分配额外的本机内存.这些额外的分配最终会使消耗的内存超 ...

  4. java 获取主机名_建议在Java中获取主机名的方法

    问题 以下哪项是获取Java当前计算机主机名的最佳和最便携的方法? Runtime.getRuntime().exec("hostname") VS InetAddress.get ...

  5. java策略管理_详解Java编程中的策略模式

    策略模式属于对象的行为模式.其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换.策略模式使得算法可以在不影响到客户端的情况下发生变化. 策略模式的结构 策略模式 ...

  6. java 字体名字_JAVA:获取系统中可用的字体的名字

    import java.awt.*; public class GetLocalFontFamily { public static void main(String[] agrs) { //获取系统 ...

  7. 会java的鸭子_鸭子在Java中打字? 好吧,不完全是

    会java的鸭子 根据维基百科,鸭子的打字是: 动态类型的类型,其中对象的方法和属性确定有效的语义,而不是其从特定类或特定接口的实现继承 用简单的话 当我看到一只鸟走路像鸭子,游泳像鸭子,嘎嘎像鸭子一 ...

  8. java 字符串缓冲区_详解Java中字符串缓冲区StringBuffer类的使用

    StringBuffer 是一个线程安全的可变的字符序列.它继承于AbstractStringBuilder,实现了CharSequence接口. StringBuilder 也是继承于Abstrac ...

  9. java 解决死锁_如何解决java中的死锁问题

    一.死锁的定义 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去. 那么我们换一个更加规范的定义:集合中的每一个进程都在 ...

最新文章

  1. (0085)iOS开发之OC与JS交互高级用法(JavaScriptCore)
  2. Linux 增加对外开放的端口
  3. 混沌与分叉python 实现
  4. 算法--三种方法求连续子数组的最大和
  5. 5.js模式-职责链模式
  6. java html 转图片_Java HTML转换为图片
  7. 关于layui下select下拉框不显示问题解决办法
  8. 吴恩达深度学习 —— 3.8 激活函数的导数
  9. win10开始菜单添加磁贴_厌倦了默认的Win10开始菜单外观?这是自定义的方法
  10. Docker教程小白实操入门(13)--如何使用COPY和ADD复制文件到容器内
  11. java如何准确的读取多音字
  12. 国内国外常用外包平台大全汇总!
  13. matlab中功率因数模块,最经典的功率因数控制器设计方案
  14. UIPATH Timeout reached
  15. 亚洲大数据峰会(香港站)总结
  16. 目标跟踪介绍(单目标)
  17. maya 杀毒软件官方下载地址及教程
  18. 微信公众号文章/菜单添加小程序时路径如何获取?
  19. 3.8-7.25 partB
  20. ColorMatrix颜色矩阵让图片千变万化

热门文章

  1. 【Flask】ORM高级操作之分组、过滤和子查询
  2. 程序人生 Hello‘s P2P
  3. php 单利模式实例化,php-单例模式实现mysql实例化对象
  4. 隐藏模块(无模块注入)
  5. 2020-11-4(安卓开发)
  6. 【网络安全】Windows恶意软件BazarLoader分析
  7. Windbg无源码调试驱动
  8. 24、Java Swing JTabbedPane:选项卡组件
  9. 1.21 Pattern类和Matcher类的使用
  10. 【PAT乙级】1046 划拳 (15 分)