Se llama una enumeración con una referencia de objeto como un valor de crear un objeto cada vez que se llama?

Rigo Sarmiento :

Esto se convirtió en mi preocupación, principalmente debido a esto:

public enum Method {
    POST(new Host().getAssets()),
    GET("GET"),
    DELETE("DELETE"),
    PUT("PUT");

    private String method;

    Method(String s) {
        method = s;
    }

    private String getMethod() {
        return method;
    }
}

La Hostclase está Primavera @ConfigurationPropertiesanotado para ser inyectado con valores de un application.propertiesarchivo en tiempo de ejecución. Si escribo que como valor de una enum, tendrá que crear una nueva instancia de objeto de Hostcada vez que utilizo Method.POST?

Shubhendu Pramanik:

No, Se va a crear instancia sólo una vez. Esto se puede comprobar con una declaración de impresión, como a continuación. Aquí getAssets()y constructor que se ha llamado una sola vez:

    public class Host {

    public static void main(String[] args) {
        System.out.println("Hello World!");
        System.out.println(Method.POST);
        System.out.println(Method.POST);
        System.out.println(Method.POST);
    }

    Host()
    {
        System.out.println("--------------");
    }

    String getAssets()
    {
        System.out.println("ssssssssssss");
        return "eeee";
    }
}


enum Method {
    POST(new Host().getAssets()),
    GET("GET"),
    DELETE("DELETE"),
    PUT("PUT");

    private String method;

    Method(String s) {
        method = s;
    }

    private String getMethod() {
        return method;
    }
}

O / P:

    Hello World!
--------------
ssssssssssss
POST
POST
POST

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=189364&siteId=1
Recomendado
Clasificación