2012-09-15 36 views
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); 
     } 
    } 
} 

對於上面的代碼,我不明白下面的部分。這個類/模板在Java中的用法是什麼意思?

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? 希望能得到您的專業知識!謝謝!

回答

1

那麼什麼String.class意味着對象的陣列?

到字符串類

而String.class在新類[] {String.class}意味着什麼的引用?

一個類的數組,它有一個對String類的引用。

意味着數組中的第一項是一個String.class類型?

類型的第一個元素的是類或Class<String>

和新對象[] {lastName的}?這意味着數組的第一個項目/實例是lastName?

是的。

我不明白下面的部分。

看起來你的所有問題都是正確的,所以看起來你是對的。

還有其他問題嗎?

+0

我是Java的新手,但我覺得這些概念很有趣。我不確定我的答案,所以請問這裏。非常感謝你! –

1

代碼正在使用反射和方法調用,使用參數參數調用String類中的對象firstName中的concat方法。它類似於電話:

result = firstName.concat(lastName); 
1
  • Class<String> cls = String.class;是一個Class object這是指String類。
  • Class[] parametertype = new Class[] { String.class };是類對象的數組,包含一個元素:String.class
  • Object[] arguments = new Object[] { lastName };是含有一種元素太
1

在Java中的每個對象都與一類型,例如字符串MyClass的相關聯。類型本身是由另一個對象實現的。所以String.classMyClass.class指的是這些類型的類對象。