java Enum valueOf tiene dos parámetros?

Code_Control_jxie0755:

¿Por qué valueOftener dos parámetros?

en la documentación de Java para valueOf

public static <T extends Enum<T>> T valueOf​(Class<T> enumType, String name)

parámetros:

enumType - la clase de objeto del tipo de enumeración de los cuales se devuelve una constante

Nombre - el nombre de la constante de retorno

Pero la mayoría de los ejemplos que he leído en línea dice:

enum WorkDays {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY;
}

Prueba:

WorkDays day1 = WorkDays.valueOf("MONDAY");
System.out.println(day1); // >>>  MONDAY

Parece que el método utilizado sólo un parámetro?

Lino:

Usted sólo puede examinar el código de bytes para ver lo que sucede cuando una enumse compila:

public enum TestEnum {A, B}

Y el código de bytes de valueOf:

// access flags 0x9
public static valueOf(Ljava/lang/String;)LTestEnum;
 L0
  LINENUMBER 1 L0
  LDC LTestEnum;.class
  ALOAD 0
  INVOKESTATIC java/lang/Enum.valueOf (Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;
  CHECKCAST TestEnum
  ARETURN
 L1
  LOCALVARIABLE name Ljava/lang/String; L0 L1 0
  MAXSTACK = 2
  MAXLOCALS = 1

No soy experto en el código de bytes, pero se puede ver que la línea:

INVOKESTATIC java/lang/Enum.valueOf (Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;

En invoca el hecho java.lang.Enum.valueOf. Un equivalente de Java se vería así:

public static TestEnum myValueOf(String name) {
    return Enum.valueOf(TestEnum.class, name);
}

Y el código de bytes confirma:

// access flags 0x9
public static myValueOf(Ljava/lang/String;)LTestEnum;
 L0
  LINENUMBER 6 L0
  LDC LTestEnum;.class
  ALOAD 0
  INVOKESTATIC java/lang/Enum.valueOf (Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;
  CHECKCAST TestEnum
  ARETURN
 L1
  LOCALVARIABLE name Ljava/lang/String; L0 L1 0
  MAXSTACK = 2
  MAXLOCALS = 1

La comparación de estos dos fragmentos se puede ver la diferencia es ... sí, el nombre (y el número de línea):

introducir descripción de la imagen aquí

Supongo que te gusta

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