2013-07-01 3 views
1

Я пытаюсь использовать банку паранамера для получения имен параметров моих классов - я использую его в одном маленьком проекте.Получение имен параметров с помощью баннера Paranamer

Но, тестирование паранамера - http://paranamer.codehaus.org/ - оно не возвращает имя параметра одного метода! Вот класс домен - где метод с параметром, который я пытаюсь вернуть имя:

package domain; 

public class DomainTest { 

private String attribute1; 
private int attribute2; 

public DomainTest() { 

} 

public DomainTest(String attribute1, int attribute2) { 
    super(); 
    this.attribute1 = attribute1; 
    this.attribute2 = attribute2; 
} 

public void someMethod(String paramTest) { 
    System.out.println("METHOD IN DOMAIN CLASS"); 
} 

public String getAttribute1() { 
    return attribute1; 
} 

public int getAttribute2() { 
    return attribute2; 
} 

} 

Метод «SomeMethod».

А вот класс пытается вернуть имена параметров:

package Testes; 

import java.lang.reflect.Method; 

import com.thoughtworks.paranamer.CachingParanamer; 
import com.thoughtworks.paranamer.Paranamer; 

import domain.DomainTest; 

public class Test { 

public static void main(String[] args) { 
    Class<?> myClass = DomainTest.class; 

    System.out.println("CLASS NAME " + myClass.getCanonicalName()); 

    String[] ParameterNames = null; 

    Paranamer paranamer = new CachingParanamer(); 

    for (Method method : myClass.getDeclaredMethods()) { 

     System.out.println("METHOD NAME: " + method.getName()); 

     ParameterNames = paranamer.lookupParameterNames(method, false); 

     if (ParameterNames.length > 0) { 
      System.out.println("OK!"); 
     } else { 
      System.out.println("NO!"); 
     } 
    } 

    System.out.println("TESTING!"); 

    for (int i = 0; i < ParameterNames.length; i++) { 
     System.out.println("PARAMETER NAME " + ParameterNames[i]); 
    } 
} 

} 

В другой теме другого пользователя здесь, люди говорили, что класс paranamer только может получить имена В параметре с отладочной информацией, установленной в на - используя -g в javac или установив его в java-компилятор в eclipse IDE.

Я сделал это и все еще не работал, не возвращая имя параметра метода someMethod выше. Я использую все зависимости, перечисленные здесь: http://grepcode.com/snapshot/repo1.maven.org/maven2/com.thoughtworks.paranamer/paranamer/2.5.2/

Может ли кто-нибудь помочь мне в этом? Большое спасибо!

+0

Всего ХА: Доступ к именам параметров с помощью отражения будет функцией в [Java 8] (http://openjdk.java.net/projects/jdk8/features#118). – Jeffrey

+0

@ Джеффри, они сказали это и на 7. Баннер паранамера действительно работает, но мне не хватает чего-то, чтобы это сработало. Большое спасибо! –

+0

Или вы можете просто комментировать ваши методы и параметры. Не DRY, но работает хорошо. –

ответ

0

Я решил после того, как помощь в бразильском форуме (http://www.guj.com.br)

Я должен использовать AdaptiveParameter вместо CachingParameter этот путь:

Paranamer paranamer = new AdaptiveParanamer(); 
Смежные вопросы