Java réflexion: Comment obtenir des méthodes sans paramètres seulement

Je suis en train de travailler sur un projet scolaire sur Java réflexion. Les détails sont ci-dessous:

Écrire un programme en mode console qui demande à l'utilisateur un nom de classe, les charges
la classe et crée une instance de celle-ci. Nous supposons que la classe a
un constructeur sans paramètres. Ensuite, le programme imprime le
les noms et valeurs des variables publiques de l'objet créé, et
une liste des méthodes publiques qui ne spécifiez pas le paramètre. L'
le programme doit permettre à l'utilisateur de choisir une méthode et de l'exécution de cette méthode sur
l'objet créé. Par la suite, le programme devrait à nouveau montrer l'
public des variables avec leurs valeurs et de permettre à l'utilisateur de choisir un
méthode, et ainsi de suite. Utiliser la classe suivante pour tester votre
mise en œuvre:

public class Counter {
    public int c;
    public void increment() { c++; }
    public void decrement() { c--; }
    public void reset() { c = 0; }
}

Le problème que je vais avoir a faire avec la phrase suivante: "la liste des méthodes publiques qui ne spécifiez pas le paramètre". Est-il un moyen de lister uniquement les méthodes sans paramètres? J'ai utilisé getMethods mais je finis par obtenir un grand nombre de méthodes de l'Objet et de la Classe des super-classes avec des paramètres.

Par exemple le code suivant que j'ai écrit:

import java.lang.reflect.*;
import java.io.*;

public class Q1 {
    public static void main(String[] args) {
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            System.out.print("What class would you like to run? ");
            String className = reader.readLine();

            Class c = Class.forName(className);
            Object o = c.newInstance();

            for (Field f : c.getFields())
                System.out.println(f);
            for (Method m : c.getMethods())
                System.out.println(m);

        } catch(IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }
}

Résultats suivants:

Quelle classe souhaitez-vous exécuter? Compteur

public int Compteur.c

public void Compteur.reset()

public void Compteur.increment()

public void Compteur.decrement()

public final native void java.lang.Objet.attendre(longtemps) throws java.lang.InterruptedException

public final void java.lang.Objet.wait() throws java.lang.InterruptedException

public final void java.lang.Objet.wait(long,int) throws java.lang.InterruptedException

public boolean java.lang.Objet.equals(java.lang.Objet)

public java.lang.Chaîne de java.lang.Objet.toString()

public native int java.lang.Objet.hashCode()

public final native java.lang.Class java.lang.Objet.getClass()

public final native void java.lang.Objet.notify()

public final native void java.lang.Objet.notifyAll()

Est-il possible d'obtenir uniquement ceux avec pas de paramètres pour être imprimé? C'est aussi mon interprétation de la cession de détails à droite à la première place? Ou le membre de phrase "méthodes publiques qui ne spécifiez pas le paramètre" peut-être dire quelque chose d'autre et j'ai entièrement la mauvaise idée?

C'est un RTFM affectation. Et voici le manuel - download.oracle.com/javase/6/docs/api/index.html?java/lang/.... Votre interprétation de l'affectation est correcte.

OriginalL'auteur Jigglypuff | 2011-10-13