2013-07-26 54 views
2

有沒有在Java中的任何方式來解決簡單的類名(例如字符串)完全合格的一個(例如java.lang.String中)或​​者更好的類直接?我想到的唯一方法是解析導入文件並從classpath jar中找出。當然,一定有更好的辦法。如何解決在Java中完全限定的類名?

+0

這不是一般的進行(例如,列表或日期)。是否有某種限制軟件包搜索的上下文? – Joni

+0

你是對的,它是依賴於上下文的,也可能在運行時不可能。我正在編譯,所以我有一個上下文。我正在使用javax.tools.JavaCompiler來編譯文件,但仍不知道這將如何幫助。 –

+0

如果您可以在源代碼中列出導入,您可以嘗試從每個包中加載類,但是由於您處於編譯過程中,可能是因爲尚未編譯而無法找到該類但... – Joni

回答

2

有沒有辦法在一般的方式做到這一點,因爲同樣的類名稱,可以在幾個包中使用,例如「日期」可能是java.util.Date還是java.sql.Date。除非你能以某種方式限制搜索範圍,否則這在理論上是不可能的。

而且,一個人必須想知道用例將要求您從一個不合格的類名獲得類。

+0

+1這是一個愚蠢的想法。 –

+0

這應該是一個評論,而不是一個答案。 – Juvanis

+1

@Juvanis好吧,也許我應該制定它作爲一個答案。 「由於邏輯不可能。」 – Kayaman

0

Java編譯器,試圖找到在import語句在源文件和包的名字簡單的類名不同組合的類路徑上的類決定完全限定名的類名。編譯的類(.class)總是獲取完全限定的名稱。

import java.util.Date; 

public class Test { 
    String str; 
    Date date; 
... 

編譯成的Test.class

public class Test { 
    Ljava/lang/String; str 
    Ljava/util/Date; date 
    ... 
相關問題