簡體   English   中英

Java 等效於 typeof(SomeClass)

[英]Java equivalent of typeof(SomeClass)

我嘗試實現一個

Hashtable<string, -Typeof one Class-> 

在 Java 中。 但我不知道如何讓這個工作。 我試過了

Hashtable<String, AbstractRestCommand.class>

但這似乎是錯誤的。

順便提一句。 我希望它在運行時為每個反射創建一個 class 的新實例。

所以我的問題是,如何做這種事情。

編輯:

我有抽象的 Class“AbstractRestCommand”。 現在我想用很多這樣的命令創建一個哈希表:

        Commands.put("PUT",  -PutCommand-);
    Commands.put("DELETE", -DeleteCommand-);

其中 PutCommand 和 DeleteCommand 擴展了 AbstractRestCommand,以便我可以創建一個新實例

String com = "PUT"
AbstractRestCommand command = Commands[com].forName().newInstance();
...

是否要創建字符串到 class 的映射? 這可以通過以下方式完成:

Map<String, Class<?>> map = new HashMap<String, Class<?>>();
map.put("foo", AbstractRestCommand.class);

如果您想將可能的類型限制為某個接口或常見的超級 class 您可以使用有界通配符,稍后您可以使用映射的 class 對象來創建該類型的對象:

Map<String, Class<? extends AbstractRestCommand>> map =
                    new HashMap<String, Class<? extends AbstractRestCommand>>();
map.put("PUT", PutCommand.class);
map.put("DELETE", DeleteCommand.class);
...
Class<? extends AbstractRestCommand> cmdType = map.get(cmdName);
if(cmdType != null)
{
    AbstractRestCommand command = cmdType.newInstance();
    if(command != null)
        command.execute();
}

我想你的意思是:

Hashtable<String, ? extends AbstractRestCommand>

嘗試:

Hashtable<string, Object>

編輯:

閱讀您的編輯后,您可以執行以下操作:

Hashtable<String, AbstractRestCommand>

當然你只需要

Hashtable<String, AbstractRestCommand>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM