Verificar se uma String está numa enum

Existe alguma maneira melhor de fazer isto?

 public static boolean validar(String apartEnum){
        try {
            Apartamentos.valueOf(apartEnum);
            return true;
        } catch (IllegalArgumentException e) {
            return false;
        }
    }

ENUM:

public enum Apartamentos {
    F1(""), F1003("T1"), F1101("T1"), F1102("T2"), F1104("T2"), F1303("T1"), F1403("T2"), F1502("T2"),
    F2(""), F2001("T1"), F2002("T1"), F2101("T1"), F2102("T2"), F2204("T2"), F2302("T2"), F2303("T1"),
    F2304("T2"), F2401("T2"), F2402("T1"), F2403("T1"), F2501("T1"), F2503("T1"), F2504("T1"),
    F3(""), F3003("T1"), F3004("T1"), F3203("T1"), F3401("T2"), F3404("T2"), F3501("T1"), F3502("T1"),
    F3503("T1");

    private String tipoAPT;

    private Apartamentos(String tipo) {
        this.tipoAPT = tipo;
    }

    public String toApart() {
        return name().length() > 2 ? name().substring(2, 5) + " " + name().substring(0, 2) : name();
    }

    public static String toEnum(String apartamento) {
        return apartamento.length() > 2 ? apartamento.substring(4, 6) + apartamento.substring(0, 3) : apartamento;
    }

    public static boolean validar(String apartEnum){
        try {
            Apartamentos.valueOf(apartEnum);
            return true;
        } catch (IllegalArgumentException e) {
            return false;
        }
    }

    public String getBloco() {
        return toApart().substring(4, 6);
    }

    public String getApartamento() {
        return toApart().substring(0, 3);
    }

    public String getTipoAPT() {
        return this.tipoAPT;
    }

Posta o fonte do enum.

Já editei o topico

Não ficou claro a utilidade dos métodos toEnum e toApart, fora isso, poderias fazer assim:

public enum Apartamentos {
    F1(""), 
    F1003("T1"), 
    F1101("T1"),
    F1102("T2"), 
    F1104("T2"), 
    F1303("T1"),
    F1403("T2"),
    F1502("T2"), 
    F2(""), 
    F2001("T1"),
    F2002("T1"), 
    F2101("T1"),
    F2102("T2"),
    F2204("T2"),
    F2302("T2"),
    F2303("T1"),
    F2304("T2"),
    F2401("T2"),
    F2402("T1"),
    F2403("T1"),
    F2501("T1"),
    F2503("T1"),
    F2504("T1"),
    F3(""),
    F3003("T1"),
    F3004("T1"),
    F3203("T1"),
    F3401("T2"),
    F3404("T2"),
    F3501("T1"),
    F3502("T1"),
    F3503("T1");

    public final String tipo;
    public final String bloco;
    public final String apartamento;

    private Apartamentos(String tipo) {
        this.tipo = tipo;
        this.bloco = toApart().substring(4, 6);
        this.apartamento = toApart().substring(0, 3);
    }

    public String toApart() {
        return name().length() > 2 ? name().substring(2, 5) + " " + name().substring(0, 2) : name();
    }

    public static String toEnum(String apartamento) {
        return apartamento.length() > 2 ? apartamento.substring(4, 6) + apartamento.substring(0, 3) : apartamento;
    }

    public static boolean validar(String apartEnum) {
        try {
            return Apartamentos.valueOf(apartEnum) != null;
        } catch (Exception e) {
            return false;
        }
    }
}

Desde já obrigado! Quanto aos metodos, basicamento eu envio os apartamentos no formato 001-F2 e o metodo toEnum() faz com que fique no formato da enum, ou seja, F2001. O metodo toApart() faz o oposto.