java取方法参数
1. java中怎么从一个方法中调用另一个方法中的参数
一个方法中的参数是局部变量,只能在本方法内部使用。
非要在别的方法中使用,可以将你在方法1中输入的整数作为方法1的返回值,在方法2中调用方法1,间接调用输入的整数。
2. java方法参数问题
可以,这称为方法引用。
前提是这个方法的参数应该是一个函数接口。
下面是一个例子:
public class Main {
public static void main(String []args) {
test(Main::sf);
test(new Main()::f);
test(System.out::println);
test((i)->{System.out.println("lambda:"+i);});
}
static void test(i o) {
o.x(666);
}
void f(int i) {
System.out.println("f:"+i);
}
static void sf(int i) {
System.out.println("sf:"+i);
}
}
interface i {
void x(int i);
}
这是运行结果截图:
3. java 怎么在当前方法内部得到当前方法的参数类型列表
java在当前方法内部想得到当前方法参数类型列表,可以通过对该方法所在的类进行反射来得到当前方法的参数列表。对当前对象进行反射可以得到类中所有成员变量和方法的对象数组,对当前方法的名字与方法数组进行比较,得到相同名字的方法(即当前方法),然后通过使用该方法对象的方法来获得参数列表。
4. 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));
}
}
5. Java如何获取方法的参数名称
package test;
import java.lang.reflect.Method;
public class TTT {
public static void main(String[] args) {
Class c = Test.class;
Method[] methods =c.getDeclaredMethods();
for (Method method : methods) {
System.out.print("方法的返回值"+method.getReturnType().getName());
System.out.print(" 方法名:"+method.getName()+"(");
Class[] paraTypes = method.getParameterTypes();
for (Class class1 : paraTypes) {
System.out.print("参数类型:"+class1.getSimpleName()+",");
}
System.out.println(")");
}
}
}
class Test
{
public void say(String word)
{
System.out.println(word);
}
public void say(String word,int n)
{
for(int i=0;i<n;i++){
System.out.println(word);
}
}
}
===============
方法的返回值void 方法名:say(参数类型:String,)
方法的返回值void 方法名:say(参数类型:String,参数类型:int,)
6. 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;
}
}