如何在java方法中获得当前方法的名称

如何在java方法中获得当前方法的名称,第1张

在java方法中获得当前方法的名称方法:

一、获得当前类名:

Java代码

thisgetClass()getName();

二、获得当前方法名臣:

JDK14

Java代码

new   Exception()getStackTrace()[i]getMethodName();//其中i   =   0就是当前的类的方法名字 ;i   ==   1就是调用者的方法

JDK15之后可用

Java代码

ThreadcurrentThread()getStackTrace()[1]getMethodName();//具体使用数组的那个元素和JVM的实现有关,我在SUN JDK6下面测试的是第二个元素,具体说明可以查看ThreadgetStackTrace方法的javadoc

方法1\x0d\(数据类型)(最小值+Mathrandom()(最大值-最小值+1))\x0d\例:\x0d\(int)(1+Mathrandom()(10-1+1))\x0d\从1到10的int型随数\x0d\方法2\x0d\获得随机数\x0d\for (int i=0;i回答于 2022-11-16

public class Test {

public static void main(String[] args)throws Exception {

// TODO Auto-generated method stub

A a=new A();

String i="setB";

Method cc=agetClass()getMethod(i, Stringclass);//获取方法

//Stringclass如果没有就是new Class[0]

Systemoutprintln(ccgetName());

ccinvoke(a, "aa");

//调用方法

Systemoutprintln(agetB());

}

}

class A{

private int a=0;

private String b="abc";

public int getA() {

return a;

}

public void setA(int a) {

thisa = a;

}

public String getB() {

return b;

}

public void setB(String b) {

thisb = b;

}

}

使用getClass方法可以获取一个对象的类型类,然后在调用该类的方法可以获取该类的相关信息,比如父类的名字,该类的名字等等:

package test;

import javalangreflectField;

import javalangreflectMethod;

public class Demo2 {

String username = "sss";

public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException, NoSuchMethodException {

Demo2 t = new Demo2();

if (Demo2class == tgetClass()) {

Systemoutprintln("equal");

}

// 获取类名

Systemoutprintln(tgetClass()getName());

// 获取父类名

Systemoutprintln(tgetClass()getSuperclass());

//获取类中某个属性

Field f = tgetClass()getField("username");

//获取类中某个方法

Method m = tgetClass()getDeclaredMethod("main", String[]class);

}

很多朋友都想知道java如何获取本地ip?下面就一起来了解一下吧~

获取java本地ip一共有两种方法:1、inetAddress类;2、封装方法。

1、 inetAddress类

通过InetAddress的实例对象包含以数字形式保存的IP地址,同时还可能包含主机名(如果使用主机名来获取InetAddress的实例,或者使用数字来构造,并且启用了反向主机名解析的功能)。InetAddress类提供了将主机名解析为IP地址(或反之)的方法。其生成InetAddress对象的方法。

import javanetInet4Address; import javanetInetAddress; import javanetUnknownHostException; public class Main {     public static void main(String[] args) throws UnknownHostException {         //Inet4Address address= (Inet4Address) Inet4AddressgetLocalHost();         InetAddress address = InetAddressgetLocalHost();         Systemoutprintln(address);//获取计算机名称和ip地址         String hostAddress = addressgetHostAddress();         Systemoutprintln(hostAddress);//获取ip地址         String hostName = addressgetHostName();         Systemoutprintln(hostName);//获取计算机名称     } }

2、封装方法。

    public static String getLocalIp() {         Enumeration  netInterfaces = null;         try {             netInterfaces = NetworkInterfacegetNetworkInterfaces();             while (netInterfaceshasMoreElements()) {                 NetworkInterface nif = netInterfacesnextElement();                 Enumeration  InetAddress = nifgetInetAddresses();                 while (InetAddresshasMoreElements()) {                     String ip = InetAddressnextElement()getHostAddress();                     if (ipstartsWith("192168")) {                         return ip;                     }                 }             }         } catch (SocketException e) {         }         return "127001";     }

说明:

Class<> c = objgetClass();//获得obj对象的class

cgetMethod(name, parameterTypes);//获得一个指定的方法。name是方法名,parameterTypes是返回对象的class,没有返回可以用Voidclass

Method[] ms = cgetMethods();//获得所有方法

ms[0]invoke(obj, args)//执行方法。obj是需要执行方法的对象,args是参数

举个栗子

try {

StringBuffer sb = new StringBuffer();

Class<> c = sbgetClass();

Method m = cgetMethod("append", Stringclass);

minvoke(sb, "试一下");

Systemoutprintln(sbtoString());

} catch (Exception e) {

eprintStackTrace();

}

用反射机制,简单写了一个例子,不懂的可以看一下相关api public class OwerMethodParam {

public static void main(String[] args) {

new OwerMethodParam()test("bb");

}

public void test(String aa) {

Method[] methods = OwerMethodParamclassgetDeclaredMethods(); //取得这个类的所有方法

if (methods != null) {

for (int i = 0; i < methodslength; i++) {

Method method = methods[i];

if ("test"equals(methodgetName())) { //取得本方法,这个方法是test,所以就用test比较

Class<>[] paramsClass = methodgetParameterTypes(); //取得参数列表的所有类

if (paramsClass != null) {

for (Class<> class1 : paramsClass) {

Systemoutprintln(class1getName());

}

}

break;

}

}

以上就是关于如何在java方法中获得当前方法的名称全部的内容,包括:如何在java方法中获得当前方法的名称、java获取随机数的几种方法是什么、java如何动态获取方法名等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9497338.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存