2011-11-02 19 views
23

Yeni bir Java programcıyım. Aşağıdaki kodum:java'da parametrenin ek açıklamalarını nasıl edinirim?

public void testSimple1(String lotteryName, 
         int useFrequence, 
         Date validityBegin, 
         Date validityEnd, 
         LotteryPasswdEnum lotteryPasswd, 
         LotteryExamineEnum lotteryExamine, 
         LotteryCarriageEnum lotteryCarriage, 
         @TestMapping(key = "id", csvFile = "lottyScope.csv") xxxxxxxx lotteryScope, 
         @TestMapping(key = "id", csvFile = "lotteryUseCondition.csv") xxxxxxxx lotteryUseCondition, 
         @TestMapping(key = "id", csvFile = "lotteryFee.csv") xxxxxxxx lotteryFee) 

Tüm dosyalanan ek açıklamaları almak istiyorum. Bazı alanlar açıklamalı ve bazıları değil.

method.getParameterAnnotations() işlevini kullanmayı biliyorum, ancak yalnızca üç ek açıklama döndürüyor.

Onlara nasıl karşılık vereceğimi bilmiyorum. herhangi bir ek açıklama olmayan herhangi bir parametre için boş bir dizi kullanılarak, parametre için

lotteryName - none 
useFrequence- none 
validityBegin -none 
validityEnd -none 
lotteryPasswd -none 
lotteryExamine-none 
lotteryCarriage-none 
lotteryScope - @TestMapping(key = "id", csvFile = "lottyScope.csv") 
lotteryUseCondition - @TestMapping(key = "id", csvFile = "lotteryUseCondition.csv") 
lotteryFee - @TestMapping(key = "id", csvFile = "lotteryFee.csv") 

cevap

35

getParameterAnnotations döner bir dizi:

aşağıdaki sonuçları bekliyoruz. Örneğin:

import java.lang.annotation.*; 
import java.lang.reflect.*; 

@Retention(RetentionPolicy.RUNTIME) 
@interface TestMapping { 
} 

public class Test { 

    public void testMethod(String noAnnotation, 
     @TestMapping String withAnnotation) 
    { 
    } 

    public static void main(String[] args) throws Exception { 
     Method method = Test.class.getDeclaredMethod 
      ("testMethod", String.class, String.class); 
     Annotation[][] annotations = method.getParameterAnnotations(); 
     for (Annotation[] ann : annotations) { 
      System.out.printf("%d annotatations", ann.length); 
      System.out.println(); 
     } 
    } 
} 

Bu çıkış verir: İlk parametresinin bir açıklaması bulunmaktadır, ve ikinci parametre, bir ek açıklama sahip olduğunu göstermektedir

0 annotatations 
1 annotatations 

. (Ek açıklama kendisi tabii ki, ikinci dizideki olacaktır.)

yüzden getParameterAnnotations "sadece 3 ek açıklamalar döndüren" Bu senin istem olarak anlamadım, tam olarak ne istediğinizi benziyor

- bu bir dizi döndürür diziler. Belki de bir şekilde iade edilen diziyi düzleştiriyorsun?

İlgili konular