「java怎么找参数」java方法中的参数

博主:adminadmin 2023-01-03 13:36:07 762

本篇文章给大家谈谈java怎么找参数,以及java方法中的参数对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

怎么寻找java中的参数来源?如下:

java中方法是调用者负责传参,想要知道参数来源,找到调用者即可

java如何获取方法参数名

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

public static void main(String[] args) {

new OwerMethodParam().test("bb");

}

public void test(String aa) {

Method[] methods = OwerMethodParam.class.getDeclaredMethods(); //取得这个类的所有方法

if (methods != null) {

for (int i = 0; i methods.length; i++) {

Method method = methods[i];

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

Class?[] paramsClass = method.getParameterTypes(); //取得参数列表的所有类

if (paramsClass != null) {

for (Class? class1 : paramsClass) {

System.out.println(class1.getName());

}

}

break;

}

}

Java如何获取方法参数的参数名称

package com.mikan;

import java.lang.annotation.*;

/**

* @author Mikan

* @date 2015-08-04 23:39

*/

@Target(ElementType.PARAMETER)

@Retention(RetentionPolicy.RUNTIME)

@Documented

public @interface Param {

String value();

}

获取注解中的参数名的工具类:

package com.mikan;

import java.lang.annotation.Annotation;

import java.lang.reflect.Method;

/**

* @author Mikan

* @date 2015-08-05 00:26

*/

public class ParameterNameUtils {

/**

* 获取指定方法的参数名

*

* @param method 要获取参数名的方法

* @return 按参数顺序排列的参数名列表

*/

public static String[] getMethodParameterNamesByAnnotation(Method method) {

Annotation[][] parameterAnnotations = method.getParameterAnnotations();

if (parameterAnnotations == null || parameterAnnotations.length == 0) {

return null;

}

String[] parameterNames = new String[parameterAnnotations.length];

int i = 0;

for (Annotation[] parameterAnnotation : parameterAnnotations) {

for (Annotation annotation : parameterAnnotation) {

if (annotation instanceof Param) {

Param param = (Param) annotation;

parameterNames[i++] = param.value();

}

}

}

return parameterNames;

}

}

测试类:

package com.mikan;

import java.lang.reflect.Method;

import java.util.Arrays;

/**

* @author Mikan

* @date 2015-08-04 23:40

*/

public class ParameterNameTest {

public void method1(@Param("parameter1") String param1, @Param("parameter2") String param2) {

System.out.println(param1 + param2);

}

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

ClassParameterNameTest clazz = ParameterNameTest.class;

Method method = clazz.getDeclaredMethod("method1", String.class, String.class);

String[] parameterNames = ParameterNameUtils.getMethodParameterNamesByAnnotation(method);

System.out.println(Arrays.toString(parameterNames));

}

}

java 怎么查看参数

可以通过Class的name属性来查看数据类型,每一个对象都有一个Class,在java中一切皆对象,故能够通过如下方式来获取对象的类型:

Date date = new Date();

System.out.println(date.getClass().getName()); //java.util.Date

如何查看java虚拟机堆内存的参数值

请确保java_home/bin配置到path环境变量下,因为这些工具都在jdk的bin目录下

jps(JVM Process Status Tool):JVM机进程状况工具

用来查看基于HotSpot JVM里面所有进程的具体状态, 包括进程ID,进程启动的路径等等。与unix上的ps类似,用来显示本地有权限的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。使用jps时,不需要传递进程号做为参数。

Jps也可以显示远程系统上的JAVA进程,这需要远程服务上开启了jstat服务,以及RMI注及服务,不过常用都是对本对的JAVA进程的查看。

命令格式:jps [ options ] [ hostid ]

常用参数说明:

-m 输出传递给main方法的参数,如果是内嵌的JVM则输出为null。

-l 输出应用程序主类的完整包名,或者是应用程序JAR文件的完整路径。

-v 输出传给JVM的参数。

例如:

C:\Users\Administratorjps -lmv

1796 -Dosgi.requiredJavaVersion=1.5 -Xms40m -Xmx512m -XX:MaxPermSize=256m

7340 sun.tools.jps.Jps -lmv -Denv.class.path=.;D:\DevTools\VM\jdk1.6.0_31\\lib\dt.jar;D:\DevTools\VM\jdk1.6.0_31\\lib\tools.jar; -Dapplication.home=D:\DevTools\VM\jdk1.6.0_31 -Xms8m

其中pid为1796的是我的eclipse进程,pid为7340的是jps命令本身的进程

jinfo(Configuration Info for Java):JVM配置信息工具

可以输出并修改运行时的java 进程的opts。用处比较简单,用于输出JAVA系统参数及命令行参数

命令格式:jinfo [ options ] [ pid ]

常用参数说明:

-flag 输出,修改,JVM命令行参数

例如:

C:\Users\Administratorjinfo 1796

将会打印出很多jvm运行时参数信息,由于比较长这里不再打印出来,可以自己试试,内容一目了然

Jstack(Stack Trace for Java):JVM堆栈跟踪工具

jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项"-J-d64“

命令格式:jstack [ option ] pid

常用参数说明:

-F 当’jstack [-l] pid’没有相应的时候强制打印栈信息

-l 长列表. 打印关于锁的附加信息,例如属于java.util.concurrent的ownable synchronizers列表.

-m 打印java和native c/c++框架的所有栈信息.

-h | -help打印帮助信息

例如:

C:\Users\Administratorjstack 1796

2013-05-22 11:42:38

Full thread dump Java HotSpot(TM) Client VM (20.6-b01 mixed mode):

"Worker-30" prio=6 tid=0x06514c00 nid=0x1018 in Object.wait() [0x056af000]

java.lang.Thread.State: TIMED_WAITING (on object monitor)

at java.lang.Object.wait(Native Method)

at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)

- locked 0x1ad84a90 (a org.eclipse.core.internal.jobs.WorkerPool)

at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)

at org.eclipse.core.internal.jobs.Worker.run(Worker.java:50)

jstat(JVM statistics Monitoriing Tool):JVM统计信息监视工具

对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控

命令格式:jstat [ option pid [interval [ s | ms ] [count] ] ]

常用参数说明:

-gcutil 输出已使用空间占总空间的百分比

-gccapacity 输出堆中各个区域使用到的最大和最小空间

例如:每隔1秒监控jvm内存一次,共监控5次

C:\Users\Administratorjstat -gccapacity 1796 1s 5

NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC PGCMN PGCMX PGC PC YGC FGC

13632.0 .0 40896.0 4032.0 4032.0 32832.0 27328.0 .0 81684.0 81684.0 12288.0 .0 80640.0 80640.0 42 96

13632.0 .0 40896.0 4032.0 4032.0 32832.0 27328.0 .0 81684.0 81684.0 12288.0 .0 80640.0 80640.0 42 96

13632.0 .0 40896.0 4032.0 4032.0 32832.0 27328.0 .0 81684.0 81684.0 12288.0 .0 80640.0 80640.0 42 96

13632.0 .0 40896.0 4032.0 4032.0 32832.0 27328.0 .0 81684.0 81684.0 12288.0 .0 80640.0 80640.0 42 96

13632.0 .0 40896.0 4032.0 4032.0 32832.0 27328.0 .0 81684.0 81684.0 12288.0 .0 80640.0 80640.0 42 97

C:\Users\Administratorjstat -gcutil 1796 1s 5

S0 S1 E O P YGC YGCT FGC FGCT GCT

0.00 0.00 0.52 53.35 99.77 42 0.513 99 38.119 38.632

0.00 0.00 0.52 53.35 99.77 42 0.513 99 38.119 38.632

0.00 0.00 0.52 53.35 99.77 42 0.513 99 38.119 38.632

0.00 0.00 0.52 53.35 99.77 42 0.513 99 38.119 38.632

0.00 0.00 0.52 53.35 99.77 42 0.513 99 38.119 38.632

一些术语的中文解释:

S0C:年轻代中第一个survivor(幸存区)的容量 (字节)

S1C:年轻代中第二个survivor(幸存区)的容量 (字节)

S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节)

S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节)

EC:年轻代中Eden(伊甸园)的容量 (字节)

EU:年轻代中Eden(伊甸园)目前已使用空间 (字节)

OC:Old代的容量 (字节)

OU:Old代目前已使用空间 (字节)

PC:Perm(持久代)的容量 (字节)

PU:Perm(持久代)目前已使用空间 (字节)

YGC:从应用程序启动到采样时年轻代中gc次数

YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)

FGC:从应用程序启动到采样时old代(全gc)gc次数

FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)

GCT:从应用程序启动到采样时gc用的总时间(s)

NGCMN:年轻代(young)中初始化(最小)的大小 (字节)

NGCMX:年轻代(young)的最大容量 (字节)

NGC:年轻代(young)中当前的容量 (字节)

OGCMN:old代中初始化(最小)的大小 (字节)

OGCMX:old代的最大容量 (字节)

OGC:old代当前新生成的容量 (字节)

PGCMN:perm代中初始化(最小)的大小 (字节)

PGCMX:perm代的最大容量 (字节)

PGC:perm代当前新生成的容量 (字节)

S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比

S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比

E:年轻代中Eden(伊甸园)已使用的占当前容量百分比

O:old代已使用的占当前容量百分比

P:perm代已使用的占当前容量百分比

S0CMX:年轻代中第一个survivor(幸存区)的最大容量 (字节)

S1CMX :年轻代中第二个survivor(幸存区)的最大容量 (字节)

ECMX:年轻代中Eden(伊甸园)的最大容量 (字节)

DSS:当前需要survivor(幸存区)的容量 (字节)(Eden区已满)

TT: 持有次数限制

MTT : 最大持有次数限制

jmap( Memory Map for Java):JVM内存映像工具

打印出某个java进程(使用pid)内存内的所有‘对象’的情况(如:产生那些对象,及其数量)

命令格式:jmap [ option ] pid

常用参数说明:

-dump:[live,]format=b,file=filename 使用二进制形式输出jvm的heap内容到文件中, live子选项是可选的,假如指定live选项,那么只输出活的对象到文件.

-histo[:live] 打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量.

-F 强迫.在pid没有相应的时候使用-dump或者-histo参数. 在这个模式下,live子参数无效.

例如:以二进制形式输入当前堆内存映像到文件data.hprof中

jmap -dump:live,format=b,file=data.hprof 1796

生成的文件可以使用jhat工具进行分析,在OOM(内存溢出)时,分析大对象,非常有用

通过使用如下参数启动JVM,也可以获取到dump文件:

-XX:+HeapDumpOnOutOfMemoryError

-XX:HeapDumpPath=./java_pidpid.hprof

在jvm发生内存溢出时生成内存映像文件

jhat(JVM Heap Analysis Tool):JVM堆转储快照分析工具

用于对JAVA heap进行离线分析的工具,他可以对不同虚拟机中导出的heap信息文件进行分析,如LINUX上导出的文件可以拿到WINDOWS上进行分析,可以查找诸如内存方面的问题。

命令格式:jhat dumpfile(jmap生成的文件)

例如:分析jmap导出的内存映像

java怎么获取url上的参数

解析url,本想用正则表达式处理,但正则表达式速度较慢。用split处理一下就可以了。

package RequestPackage;

import java.util.HashMap;

import java.util.Map;

public class CRequest {

/**

* 解析出url请求的路径,包括页面

* @param strURL url地址

* @return url路径

*/

public static String UrlPage(String strURL)

{

String strPage=null;

String[] arrSplit=null;

strURL=strURL.trim().toLowerCase();

arrSplit=strURL.split("[?]");

if(strURL.length()0)

{

if(arrSplit.length1)

{

if(arrSplit[0]!=null)

{

strPage=arrSplit[0];

}

}

}

return strPage;

}

/**

* 去掉url中的路径,留下请求参数部分

* @param strURL url地址

* @return url请求参数部分

*/

private static String TruncateUrlPage(String strURL)

{

String strAllParam=null;

String[] arrSplit=null;

strURL=strURL.trim().toLowerCase();

arrSplit=strURL.split("[?]");

if(strURL.length()1)

{

if(arrSplit.length1)

{

if(arrSplit[1]!=null)

{

strAllParam=arrSplit[1];

}

}

}

return strAllParam;

}

/**

* 解析出url参数中的键值对

* 如 "index.jsp?Action=delid=123",解析出Action:del,id:123存入map中

* @param URL url地址

* @return url请求参数部分

*/

public static MapString, String URLRequest(String URL)

{

MapString, String mapRequest = new HashMapString, String();

String[] arrSplit=null;

String strUrlParam=TruncateUrlPage(URL);

if(strUrlParam==null)

{

return mapRequest;

}

//每个键值为一组

arrSplit=strUrlParam.split("[]");

for(String strSplit:arrSplit)

{

String[] arrSplitEqual=null;

arrSplitEqual= strSplit.split("[=]");

//解析出键值

if(arrSplitEqual.length1)

{

//正确解析

mapRequest.put(arrSplitEqual[0], arrSplitEqual[1]);

}

else

{

if(arrSplitEqual[0]!="")

{

//只有参数没有值,不加入

mapRequest.put(arrSplitEqual[0], "");

}

}

}

return mapRequest;

}

}

测试类

package RequestPackage;

import java.util.Map;

public class TestCRequest {

/**用于测试CRequest类

* @param args

*/

public static void main(String[] args) {

// 请求url

String str = "index.jsp?Action=delid=123sort=";

//url页面路径

System.out.println(CRequest.UrlPage(str));

//url参数键值对

String strRequestKeyAndValues="";

MapString, String mapRequest = CRequest.URLRequest(str);

for(String strRequestKey: mapRequest.keySet()) {

String strRequestValue=mapRequest.get(strRequestKey);

strRequestKeyAndValues+="key:"+strRequestKey+",Value:"+strRequestValue+";";

}

System.out.println(strRequestKeyAndValues);

//获取无效键时,输出null

System.out.println(mapRequest.get("page"));

}

}

关于java怎么找参数和java方法中的参数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。