动态获取当前方法名称的更短方法[重复]

     2023-02-23     126

关键词:

【中文标题】动态获取当前方法名称的更短方法[重复]【英文标题】:Shorter method for getting the name of the current method dynamically [duplicate] 【发布时间】:2012-11-16 13:35:04 【问题描述】:

我正在寻找一种无需创建空白对象即可获取当前方法名称的方法。有没有办法做到这一点?这将整理我们的日志记录代码。

这是我们现在要做的:

new Object() .getClass().getEnclosingMethod().getName(

【问题讨论】:

【参考方案1】:

Thread.currentThread().getStackTrace()[1]怎么样?

由于这使您能够检查更高级别的堆栈跟踪,您可以轻松地将其包装在辅助方法中(见下文)。它还为您提供了获取更多信息的选项,而不仅仅是方法名称,例如文件名、行号等。

edit 辅助方法可能看起来像这样(感谢@Esailija):

public static String getMethodName() 
    return Thread.currentThread().getStackTrace()[2].getMethodName();
 

【讨论】:

高级0表示当前方法,1表示调用方法 @dreamcrash:你真的试过了吗?我有。 public static String methodName() return Thread.currentThread().getStackTrace()[2].getMethodName(); 非常适合我 @NPE 对不起,你是对的 0 将返回 getStackTrace。 +1 为不便之处。 @dreamcrash 支持您的评论,因为我想知道为什么我们应该使用 [1] 并且懒得检查 [0] 会返回什么 :)【参考方案2】:

你也可以使用

Thread.currentThread().getStackTrace()[1].getMethodName() 

包含最后一个方法调用,但不短于

new Object() .getClass().getEnclosingMethod().getName

我不知道有一种分拣机方法。

【讨论】:

【参考方案3】:

您可以使用thread.currentThread().getStacktrace()[0].getMethodName()。但这甚至比new Throwable().getStacktrace() 需要更多时间(参见http://alexradzin.blogspot.co.il/2011/12/how-slow-getstacktrace-is.html)

【讨论】:

在JS中编写三元运算符的更短方法[重复]

】在JS中编写三元运算符的更短方法[重复]【英文标题】:ShorterwaytowriteaternaryoperatorinJS[duplicate]【发布时间】:2021-10-2713:08:25【问题描述】:所以听我说,我觉得必须有办法,但我真的不确定。假设我的反应项目中有这个name?name:"... 查看详情

Ruby:定义实例变量的更短方法

】Ruby:定义实例变量的更短方法【英文标题】:Ruby:shorterwaytodefineinstancevariables【发布时间】:2016-06-1723:54:33【问题描述】:我正在寻找在initialize方法中定义实例变量的更短的方法:classMyClassattr_accessor:foo,:bar,:baz,:qux#Typingsamestuff... 查看详情

使 div 响应的更短方法

】使div响应的更短方法【英文标题】:shorterwaytomakeadivresponsive【发布时间】:2021-03-2618:25:17【问题描述】:.ains是我的中心故事div,需要具有灵活的宽度有没有更短的方法-一些公式或任何东西-说这个(没有javascript).ainswidth:50%;@... 查看详情

使用 Maybe 遍历嵌套记录的更短方法

】使用Maybe遍历嵌套记录的更短方法【英文标题】:ShorterwaytotraversenestedrecordwithMaybe【发布时间】:2017-09-0500:09:28【问题描述】:是否有更短/更简洁的方式来编写以下sn-p代码:fromMaybe""$fmap(^.fullName)(bi^.bookerContact)这里bi^.bookerContac... 查看详情

指定完成处理程序的更短方法

】指定完成处理程序的更短方法【英文标题】:Shorterwaystospecifycompletionhandler【发布时间】:2016-02-2013:08:29【问题描述】:我已经遇到过几次这个问题了,所以我想联系一下。我有许多网络接口负责进行异步网络调用,每个接口... 查看详情

获取当前正在执行的方法的名称[重复]

】获取当前正在执行的方法的名称[重复]【英文标题】:Getthenameofthecurrentmethodbeingexecuted[duplicate]【发布时间】:2011-11-2115:42:58【问题描述】:嗯,我基本上在做的是一个有很多活动的应用程序。我有几个朋友使用安卓手机,我给... 查看详情

Powershell:使用许多文件名执行命令的更短方法?

】Powershell:使用许多文件名执行命令的更短方法?【英文标题】:Powershell:shorterwaytoexecutecommandwithmanyfilenames?【发布时间】:2014-10-0703:22:09【问题描述】:不要在命令行上输入这个长命令:pythonbabynames.pybaby1990.htmlbaby1992.htmlbaby1994... 查看详情

检查 jquery 的多个输入的值是不是为空的更短方法

】检查jquery的多个输入的值是不是为空的更短方法【英文标题】:Shorterwaytocheckthatvalueofmultipleinputisemptyforjquery检查jquery的多个输入的值是否为空的更短方法【发布时间】:2019-05-0313:12:51【问题描述】:leta=$(\'#plustitle\').val().trim();... 查看详情

在 Django 中,如果存在的话,根据视图名称动态加载一些 JavaScript 的更聪明的方法是啥?

】在Django中,如果存在的话,根据视图名称动态加载一些JavaScript的更聪明的方法是啥?【英文标题】:InDjangowhatisthesmarterwaytodynamicallyloadsomeJavaScriptbasedonviewnameifexists?在Django中,如果存在的话,根据视图名称动态加载一些JavaScript... 查看详情

获取当前方法名称

//获取当前方法名称System.Reflection.MethodBase.GetCurrentMethod().Name//获取调用本方法的方法名称newSystem.Diagnostics.StackTrace().GetFrame(1).GetMethod().Name//GetFrame(1)中1代表上级,2代表上上级,以此类推   查看详情

如何在OnExceptionAsync c#中获取引发异常的方法名称[重复]

】如何在OnExceptionAsyncc#中获取引发异常的方法名称[重复]【英文标题】:HowtogetthemethodnamethatoriginatedtheexceptioninOnExceptionAsyncc#[duplicate]【发布时间】:2021-12-0421:50:46【问题描述】:我试图在我的异常过滤器中获取源自异常的方法名... 查看详情

为列映射记录名称的更简单方法?

】为列映射记录名称的更简单方法?【英文标题】:Easierwaytomaprecordnamesforacolumn?【发布时间】:2012-12-2610:07:04【问题描述】:我目前正在使用REPLACE函数来更改几个记录名称(整数到它们对应的人类可读名称),如下所示:SELECTSU... 查看详情

FluentNHibernate - 映射时获取实体名称。当前方法已过时

】FluentNHibernate-映射时获取实体名称。当前方法已过时【英文标题】:FluentNHibernate-Gettingtheentitynamewhenmapping.Currentmethodbeingmadeobsolete【发布时间】:2011-06-0813:01:52【问题描述】:我目前通过使用AutoMappingOverride将表的名称设置为实... 查看详情

dedecms获取顶级栏目名称二级栏目名称实现方法转

织梦DEDECMS文章、栏目页获取当前页面顶级栏目名称的方法在用织梦做一些项目时,时常会碰到需要在当前页面调用顶级栏目名称的时候,织梦默认{dede:fieldname=‘typename‘/}可以获取当前栏目页上一级栏目的名称,而不是当前栏目... 查看详情

获取当前设置为 UIImageView 的图像名称的任何替代方法?

】获取当前设置为UIImageView的图像名称的任何替代方法?【英文标题】:AnyalternativetogetImagenamethatiscurrentlysettoUIImageView?【发布时间】:2013-06-0309:57:04【问题描述】:我正在使用UIImageView和大约5个图像,这些图像在计时器的帮助下... 查看详情

使用 PHP 动态创建 Javascript 的更简单方法

】使用PHP动态创建Javascript的更简单方法【英文标题】:EasierwaytodynamicallycreateJavascriptusingPHP【发布时间】:2011-09-2821:24:02【问题描述】:我目前正在使用PHP动态创建一个javascript,它将在页面上为echoed。示例代码:$JS.=\'<script>... 查看详情

从方法中检索调用方法名称[重复]

...从对象中的多个位置调用。有没有一种快速简便的方法来获取调用这个流行方法的方法的名称。伪代码示例:publicMain()PopularMethod();publicButtonCl 查看详情

activiti动态获取当前流程节点的操作按钮

参考技术A在activiti操作流程图走向时,每个节点流向都不一样,怎么样将节点的流向,封装成一个统一方法,返回这个节点可以操作的按钮及执行这个操作需要提交的参数呢?本次采用的版本是activiti6.0版本,因为6.0版本和5.x相... 查看详情