一、获得当前类名:
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对象的classcgetMethod(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如何动态获取方法名等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)