Comment passer une classe en paramètre en Java?



Answers

public void callingMethod(Class neededClass) {
    //Put your codes here
}

Pour appeler la méthode, vous l'appelez de cette façon:

callingMethod(ClassBeingCalled.class);
Question

Existe-t-il un moyen de passer la classe en tant que paramètre dans Java et de déclencher certaines méthodes de cette classe?

void main()
{
    callClass(that.class)
}

void callClass(???? classObject)
{
    classObject.somefunction
    // or 
    new classObject()
    //something like that ?
}

J'utilise Google Web Toolkit et il ne supporte pas la réflexion.




Comme vous l'avez dit, GWT ne supporte pas la réflexion. Vous devez utiliser la liaison différée au lieu de la réflexion, ou une bibliothèque tierce telle que gwt-ent pour le support de la réflexion à la couche gwt.







Ce genre de chose n'est pas facile. Voici une méthode qui appelle une méthode statique:

public static Object callStaticMethod(
    // class that contains the static method
    final Class<?> clazz,
    // method name
    final String methodName,
    // optional method parameters
    final Object... parameters) throws Exception{
    for(final Method method : clazz.getMethods()){
        if(method.getName().equals(methodName)){
            final Class<?>[] paramTypes = method.getParameterTypes();
            if(parameters.length != paramTypes.length){
                continue;
            }
            boolean compatible = true;
            for(int i = 0; i < paramTypes.length; i++){
                final Class<?> paramType = paramTypes[i];
                final Object param = parameters[i];
                if(param != null && !paramType.isInstance(param)){
                    compatible = false;
                    break;
                }

            }
            if(compatible){
                return method.invoke(/* static invocation */null,
                    parameters);
            }
        }
    }
    throw new NoSuchMethodException(methodName);
}

Mise à jour: Attendez, je viens de voir la balise gwt sur la question. Vous ne pouvez pas utiliser la réflexion dans GWT




Related