❶ java 怎么在当前方法内部得到当前方法的参数类型列表
java在当前方法内部想得到当前方法参数类型列表,可以通过对该方法所在的类进行反射来得到当前方法的参数列表。对当前对象进行反射可以得到类中所有成员变量和方法的对象数组,对当前方法的名字与方法数组进行比较,得到相同名字的方法(即当前方法),然后通过使用该方法对象的方法来获得参数列表。
❷ java怎么获取方法参数名
在java中,可以通过反射获取到类、字段、方法签名等相关的信息,像方法名、返回值类型、参数类型、泛型类型参数等,但是不能够获取方法的参数名。在实际开发场景中,有时需要根据方法的参数名做一些操作,比如像spring-mvc中,@RequestParam、@PathVariable注解,如果不指定相应的value属性,默认就是使用方法的参数名做为HTTP请求的参数名,它是怎么做到的呢?
在这样情况下,有两种方法获取方法来解决这种需求,第一种方法是使用注解,在注解中指定对应应的参数名称,在需要使用参数名称时,获取注解中相应的值即可。第二种方法是从字节码中获取方法的参数名,但是这有一个限制,只有在编译时使用了-g或-g:vars参数生成了调试信息,class文件中才会生成方法参数名信息(在本地变量表LocalVariableTable中),而使用-g:none方式编译的class文件中是没有方法参数名信息的。所以要想完全不依赖class文件的编译模式,就不能使用这种方式。
❸ Java如何获取方法参数的参数名称
packagecom.mikan;
importjava.lang.annotation.*;
/**
*@authorMikan
*@date2015-08-0423:39
*/
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public@interfaceParam{
Stringvalue();
}
获取注解中的参数名的工具类:
packagecom.mikan;
importjava.lang.annotation.Annotation;
importjava.lang.reflect.Method;
/**
*@authorMikan
*@date2015-08-0500:26
*/
publicclassParameterNameUtils{
/**
*获取指定方法的参数名
*
*@parammethod要获取参数名的方法
*@return按参数顺序排列的参数名列表
*/
publicstaticString[](Methodmethod){
Annotation[][]parameterAnnotations=method.getParameterAnnotations();
if(parameterAnnotations==null||parameterAnnotations.length==0){
returnnull;
}
String[]parameterNames=newString[parameterAnnotations.length];
inti=0;
for(Annotation[]parameterAnnotation:parameterAnnotations){
for(Annotationannotation:parameterAnnotation){
if(annotationinstanceofParam){
Paramparam=(Param)annotation;
parameterNames[i++]=param.value();
}
}
}
returnparameterNames;
}
}
测试类:
packagecom.mikan;
importjava.lang.reflect.Method;
importjava.util.Arrays;
/**
*@authorMikan
*@date2015-08-0423:40
*/
publicclassParameterNameTest{
publicvoidmethod1(@Param("parameter1")Stringparam1,@Param("parameter2")Stringparam2){
System.out.println(param1+param2);
}
publicstaticvoidmain(String[]args)throwsException{
Class<ParameterNameTest>clazz=ParameterNameTest.class;
Methodmethod=clazz.getDeclaredMethod("method1",String.class,String.class);
String[]parameterNames=ParameterNameUtils.(method);
System.out.println(Arrays.toString(parameterNames));
}
}
❹ java怎样获取url参数
如果是javaweb 项目,那么非常简单,直接调用 HttpServletRequest 对象的 .getParamter("参数名称") 方法即可得到。
如果是普通java 项目:
/**
* 获取网址的指定参数值
*
* @param url
* 网址
* @param parameter
* 参数名称
* @author cevencheng
* @return
*/
public static String getParameter(String url, String parameter, String defaultValue) {
try {
final String charset = "utf-8";
url = URLDecoder.decode(url, charset);
if (url.indexOf('?') != -1) {
final String contents = url.substring(url.indexOf('?') + 1);
HashMap<String, String> map = new HashMap<String, String>();
String[] keyValues = contents.split("&");
for (int i = 0; i < keyValues.length; i++) {
String key = keyValues[i].substring(0, keyValues[i].indexOf("="));
String value = keyValues[i].substring(keyValues[i].indexOf("=") + 1);
if (key.equals(parameter)) {
if (value == null || "".equals(value.trim())) {
return defaultValue;
}
return value;
}
map.put(key, value);
}
}
return null;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
❺ Java如何找出一个字符串中包含的所有“参数”
首先来说,java是强类型语言,你C.D.E没有定义就使用是违反java语言规则的
你的应该是JS,不是java
java的字符串是String 不是var java和基本数据类型必须通过封装类转化才能做比较,String对象没有> == 这一类的比较符号(==号可以比较,但结果永远是false)
❻ java中通过键盘输入获取多个参数
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
publicclassTest{
publicstaticvoidmain(String[]args)throwsIOException{
BufferedReaderreader=newBufferedReader(newInputStreamReader(System.in));
Stringarg=reader.readLine();
String[]num=arg.split("");
inta=Integer.valueOf(num[0]);
intb=Integer.valueOf(num[1]);
intc=Integer.valueOf(num[2]);
System.out.println("a="+a);
System.out.println("b="+b);
System.out.println("c="+c);
}
}
❼ java 获取系统参数
java不适合做这些!
1,windows平台使用window api获取(微软那一套)
2,linux平台使用c++,c语言之类,调用配置文件或是shell,或者自己实现来读取
3,需找java开源包来实现,如sigar
❽ java 通过反射怎么获取方法中参数值
答案是没法获取。
首先反射获取的是类、属性、或者方法的定义,就拿方法来说,方法的定义是什么呢?
方法的定义包括:方法名,方法的参数类型列表,方法的返回值类型。
方法的参数类型列表包括什么呢?
包括每个参数的顺序和参数类型。
参数值是什么?是在这个方法被调用的时候传入的参数叫做参数值。反射呢,是获取的它的定义,并不牵扯调用,所以说没法获取。
❾ servlet 从java中获取参数
在web.xml里面可以定义两种参数:
一种是全局范围的参数,
一种是servlet内的参数。
web.xml里定义参数的应用举例:在做分页功能时,可以在代码中直给定pageSize的值,这样,写死在代码中,灵活性差。改进方法:将pageSize配置在web.xml中,然后再在代码中获取。
1. 全局范围的参数,存放在ServletContext对象中,在web.xml中的配置如下:
1 <context-param>2 <param-name>page-size</param-name>3 <param-value>2</param-value>4 </context-param>
在servlet中的获取:
1 ServletContext sc = this.getServletContext();2 String strPageSize = sc.getInitParameter("page-size");3 int pageSize=Integer.parseInt(strPageSize);
或
1 int pageSize=Integer.parseInt(this.getServletContext().getInitParameter("page-size"));
2. Servlet范围内的参数,只能在servlet的inti()方法中取得,在web.xml中的配置如下:
1 <servlet> 2 <servlet-name>SearchItemServlet</servlet-name> 3 <servlet-class> 4 com.bjpowernode.drp.basedata.web.SearchItemServlet 5 </servlet-class> 6 <init-param> 7 <param-name>page-size</param-name> 8 <param-value>3</param-value> 9 </init-param>10 </servlet>
在servlet中的获取:
1 int pageSize=Integer.parseInt(this.getServletConfig().getInitParameter("page-size"));
getServletContext()获得的是 <context-param> </context-param>配置的参数信息
getServletConfig()获得的是 <init-param> </init-param>配置的参数信息
❿ 怎么在java方法内部获得给方法的参数列表。
Class<?>[] paramsClass = method.getParameterTypes();
取得参数列表的所有类型,这个是按这个方法的参数列表的顺序给出参数的类型的,有了这个类型就可以了呀,不需要参数名称;