java中调用_如何获取Java中的调用方类
小编典典
你可以生成堆栈跟踪并使用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中的调用方类相关推荐
- java 事件通知_正确获取Java事件通知
java 事件通知 实现观察者模式以提供Java事件通知似乎是一件容易的事. 但是,容易陷入一些陷阱. 这是我在各种场合不慎造成的常见错误的解释-- Java事件通知 让我们从一个简单的bean St ...
- java 对象地址_如何获取Java对象的地址?
有没有办法获取Java对象的地址? 问题来自哪里?:首先,我读取属性文件,并将文件中的所有数据放入表中.属性文件可以更新.所以,我想听那个文件.我使用PropertyChangeSupport和Pro ...
- java 内存跟踪_详解JVM中的本机内存跟踪
1.概述 有没有想过为什么Java应用程序通过众所周知的-Xms和-Xmx调优标志消耗的内存比指定数量多得多?出于各种原因和可能的优化,JVM可以分配额外的本机内存.这些额外的分配最终会使消耗的内存超 ...
- java 获取主机名_建议在Java中获取主机名的方法
问题 以下哪项是获取Java当前计算机主机名的最佳和最便携的方法? Runtime.getRuntime().exec("hostname") VS InetAddress.get ...
- java策略管理_详解Java编程中的策略模式
策略模式属于对象的行为模式.其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换.策略模式使得算法可以在不影响到客户端的情况下发生变化. 策略模式的结构 策略模式 ...
- java 字体名字_JAVA:获取系统中可用的字体的名字
import java.awt.*; public class GetLocalFontFamily { public static void main(String[] agrs) { //获取系统 ...
- 会java的鸭子_鸭子在Java中打字? 好吧,不完全是
会java的鸭子 根据维基百科,鸭子的打字是: 动态类型的类型,其中对象的方法和属性确定有效的语义,而不是其从特定类或特定接口的实现继承 用简单的话 当我看到一只鸟走路像鸭子,游泳像鸭子,嘎嘎像鸭子一 ...
- java 字符串缓冲区_详解Java中字符串缓冲区StringBuffer类的使用
StringBuffer 是一个线程安全的可变的字符序列.它继承于AbstractStringBuilder,实现了CharSequence接口. StringBuilder 也是继承于Abstrac ...
- java 解决死锁_如何解决java中的死锁问题
一.死锁的定义 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去. 那么我们换一个更加规范的定义:集合中的每一个进程都在 ...
最新文章
- (0085)iOS开发之OC与JS交互高级用法(JavaScriptCore)
- Linux 增加对外开放的端口
- 混沌与分叉python 实现
- 算法--三种方法求连续子数组的最大和
- 5.js模式-职责链模式
- java html 转图片_Java HTML转换为图片
- 关于layui下select下拉框不显示问题解决办法
- 吴恩达深度学习 —— 3.8 激活函数的导数
- win10开始菜单添加磁贴_厌倦了默认的Win10开始菜单外观?这是自定义的方法
- Docker教程小白实操入门(13)--如何使用COPY和ADD复制文件到容器内
- java如何准确的读取多音字
- 国内国外常用外包平台大全汇总!
- matlab中功率因数模块,最经典的功率因数控制器设计方案
- UIPATH Timeout reached
- 亚洲大数据峰会(香港站)总结
- 目标跟踪介绍(单目标)
- maya 杀毒软件官方下载地址及教程
- 微信公众号文章/菜单添加小程序时路径如何获取?
- 3.8-7.25 partB
- ColorMatrix颜色矩阵让图片千变万化