0
package MyTest;

import java.lang.reflect.*;

public class CallingMethod {
    public static void main(String[] args) {
        String firstName = new String("Deepak");
        String lastName = new String("Kumar");
        String result = new String("");

        Class<String> cls = String.class;
        Class[] parametertype = new Class[] { String.class };
        Object[] arguments = new Object[] { lastName };
        try {
            Method concatMethod = cls.getMethod("concat", parametertype);
            result = (String) concatMethod.invoke(firstName, arguments);
            System.out.println(" Concatenated String is => " + result);
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

对于上面的代码,我不明白下面的部分。

Class<String> cls = String.class;
Class[] parametertype = new Class[] { String.class };
Object[] arguments = new Object[] { lastName };

那么是什么String.class意思呢?String.classnew Class[] { String.class }意味着什么?这意味着数组中的第一项是String.class类型?或者所有的项目都是String.class类型?和new Object[] { lastName }?这意味着数组的第一项/实例是lastName?希望得到你的专业知识!谢谢!

4

4 回答 4

1

代码使用反射和方法调用来调用类中的concat方法String,在 object 上firstName,使用 arguments 参数。它类似于调用:

result = firstName.concat(lastName);
于 2012-09-15T16:31:29.693 回答
1
  • Class<String> cls = String.class;是一个引用 String 类的Class 对象。
  • Class[] parametertype = new Class[] { String.class };是一个 Class 对象数组,包含一个元素:String.class
  • Object[] arguments = new Object[] { lastName };也是包含一个元素的对象数组
于 2012-09-15T16:32:18.507 回答
1

那么 String.class 是什么意思呢?

对字符串类的引用

而 new Class[] { String.class } 中的 String.class 是什么意思?

一个类数组,其中有一个对字符串类的引用。

表示数组中的第一项是 String.class 类型?

第一个元素的类型是 Class 或Class<String>

还有新对象[] {姓氏}?这意味着数组的第一项/实例是lastName?

是的。

我不明白下面的部分。

看来您在所有问题上都是正确的,所以看起来您一直都是对的。

你还有别的问题吗?

于 2012-09-15T16:32:31.473 回答
1

Java 中的每个对象都与一个类型相关联,例如StringMyClass。该类型本身由另一个对象实现。所以String.classMyClass.class指的是这些类型的类对象。

于 2012-09-15T16:32:39.383 回答