java怎样获取函数调用者的方法名?

问题描述

java怎样获取函数调用者的方法名?

如下面代码

 class A{
     private void  method(){
            //这里怎样获取调用者的名称呢?
     }

     private void method1(){
                    method();
     }

     private void method2(){
                method();
     }

 }

解决方案

使用StackTraceElement 数组,
参看在Java代码运行时获取当前和调用者的行号,方法名,类名,文件名

解决方案二:

我不知道怎么直接获取到,如果为method()添加一个参数表示调用方法的名称,由调用者传入自己的名称,不知道是否满足你的要求。

class B {
    private void method(String invokeName) {
    }

    private void method1() {
        method("method1");
    }

    private void method2() {
        method("method2");
    }
}

解决方案三:

采纳的答案很对,现在给大家一个懒人代码

    //获取调取函数所在类名称
    public static String getLastClassName(){
        String name=Thread.currentThread().getStackTrace()[3].getClassName();
        return name;
    }
时间: 2024-11-05 20:39:17

java怎样获取函数调用者的方法名?的相关文章

ASP.NET中实现获取调用方法名

  需要添加相应的命名空间: 复制代码 代码如下: using System; using System.Diagnostics; using System.Reflection; 如果仅是获取当前方法名,可以使用如下代码: 复制代码 代码如下: public static void WriteSysLog(int level, string content) { MethodBase mb = MethodBase.GetCurrentMethod(); string systemModule

如何通过java反射机制动态获得方法名

问题描述 AllBOClient xf = new AllBOClient(pb.getWsdlurl());AllBOPortType bo = xf.getAllBOHttpPort();bo.notice2Province(a[1],a[0]);在数据库中存有notice2province的值,怎样运用反射机制动态获得notice2province的值?问题补充:从数据库读出值来替换notice2Province问题补充:congjl2002的答案似乎还少了一步,我还需要向得到的方法中传入

java新手 主函数里面能创建静态方法吗

问题描述 java新手 主函数里面能创建静态方法吗 题目要求: 有一个抽象类ObjectVolume,如下所示: abstract class ObjectVolume { abstract double getVolume(); //返回物体的体积 } (1)编写球体类,立方体类和圆柱体类,它们是抽象类ObjectVolume的子类. (2)编写一个公共类,其中包含main方法和static void get(ObjectVolume obj)方法. (3)在main方法中,从键盘上输入1(表

Java 反射获取类详细信息的常用方法总结_java

类ReflectionDemo 复制代码 代码如下: package Reflection; @Deprecated public class ReflectionDemo {     private String pri_field;     public String pub_field;     public ReflectionDemo(){}     public ReflectionDemo(String name){}     private ReflectionDemo(Stri

java-Jsp+Servlet怎么在form中指定要访问的servlet中的方法名

问题描述 Jsp+Servlet怎么在form中指定要访问的servlet中的方法名 Jsp+Servlet怎么在form中指定要访问的servlet中的方法名,在Jsp中写了一个form,然后想指定访问servlet中的regist()方法,而不是doGet()或者doPost()方法,应该怎么样指定 解决方案 servlet只能指定post,get请求,你随便请求一个,在调一下regist()呗,或者重写父类service方法,在里面加入regist() 解决方案二: dopost里面判断调

Groovy探索 关于方法名的DSL

Groovy语言最引以为豪的特点就是DSL了,关于DSL的定义以及分类.优点等,就不是本篇所要阐述的了,大家可以上网查,网上有大量的这方便的介绍.Groovy语言是非常便于设计内部DSL了,在这方面,我的Groovy探索系列已经有了很多专题谈到过使用Groovy语言创建内部DSL的一些方面.本篇所要探索的是一个关于Groovy语言DSL的一个非常小的方面.也是非常不起眼的方面:关于方法名的DSL. 说到方法名的DSL,其实我们在Groovy语言中已经有了非常广泛的应用.比如,我们在一开始学习Gr

java如何获取网卡MAC、硬盘序列号、CPU ID

问题描述 java如何获取网卡MAC.硬盘序列号.CPUID 解决方案 解决方案二:c:以下代码可以取得系统特征码(网卡MAC.硬盘序列号.CPUID.BIOS编号)BYTEszSystemInfo[4096];//在程序执行完毕后,此处存储取得的系统特征码UINTuSystemInfoLen=0;//在程序执行完毕后,此处存储取得的系统特征码的长度//网卡MAC地址,注意:MAC地址是可以在注册表中修改的{UINTuErrorCode=0;IP_ADAPTER_INFOiai;ULONGuSi

Java解析php函数json_encode unicode的编码问题

这篇文章主要介绍了java解析php函数json_encode unicode 编码问题,需要的朋友可以参考下. android开发中在和服务器端接口对接时出现编码问题,从服务器端获取到的数据是 "\u8bbe\u59071ID-\u8bbe\u59071\u540d\u79f0;\u8bbe\u59073id-\u8bbe\u59073\u540d\u79f0;\u8bbe\u59077id-\u8bbe\u59077\u540d\u79f0" 接口是通过php函数中json_enc

java调用存储函数,有些数据可以执行成功,有些却报异常是什么原因?

问题描述 java调用存储函数,有些数据可以执行成功,有些却报异常是什么原因? /** * 获取书籍总点击量 * * @param bookid 书籍id * @return 书籍总点击量 * @throws Exception */ @Override public int getClickAllById(int bookid) throws Exception { ResultSet rs = null; DataParameter[] parameters = new DataParame