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;
}
}