假设我有一个方法
public class Activity_View extends AppCompatActivity {
Button backBtn;
Button editBtn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_view);
backBtn = (Button) findViewById(R.id.btnBack);
editBtn = (Button) findViewById(R.id.btnEdit);
...
另一种方法,在另一个班级,
public <T extends Enum<T>> Enum<T> getEnumValue(String string, ??)
我将从方法2作为方法1的参数传递给我,以便我可以获得枚举值,即在我的幻想世界中我可以做到:
方法2:
public T method(String string)
...
getEnumValue(string, ??)
方法1:
getEnumValue(string, T.class)
答案 0 :(得分:1)
由于类型擦除,无法执行此操作。您必须传递显式Class<T>
或足够的信息才能将其恢复(例如,您可以传递给String
的{{1}}名称,或者Class.forName
)。
答案 1 :(得分:-1)
EnumClass.getEnumConstants()
它位于java.lang.Class
而不是java.lang.Enum
。使用EnumClass.VALUE.cardinal()
索引此数组。
如果您坚持呼叫String
名称,则可以
EnumClass.getEnumConstants()[0].valueOf(stringValue)
这是为了在实例上调用静态方法,你可能会收到编译器警告,但它可以工作。