2016-11-30 41 views
0

我在探索一次實例化的想法,作爲一種可能的不同方法來確保對象處理。這個想法是在一個if語句的條件下完全實例化,測試和處理一個對象,但是我在實例化對象時遇到了一些麻煩。我認爲問題在於我如何接近這個概念,但我很想看看是否有辦法重新組織條件。在條件語句內實例化

if((new ResultSet(dbPwdTest.getResultSet())).getString(1).equals(pwd/*need to hash this*/)) 
       { 
        return true; 
       } 

這是可能的嗎?目前,編譯器返回「無法實例化類型'ResultSet'」。

編輯:也許答案就在於使用包含PreparedStatement的內ResultSet中,所以下面將工作:

if(dbPwdTest.getResultSet().getString(1).equals(pwd/*hash! hash! hash!*/)) 
       { 
        return true; 
       } 

雖然我不知道,這種做法實際上是一樣的。

+1

是的,這是完全可能的,只是沒有'ResultSet'。你爲什麼試圖創建一個接口的實例? –

+0

'ResultSet'是一個接口,所以你不能創建它的一個實例(除非你提供了一個實現)。 – Eran

+0

您認爲這樣可以讓您的代碼「安全」嗎? 'java.sql.ResultSet'是一個接口,所以你不能像這樣實例化它。 – Jesper

回答

0

要實例化一個接口,您需要創建它的一個實現。這可以完成,但它會使條件非常難以閱讀。我會建議在if語句之前實例化接口。但要回答你的問題:

if((new ResultSet(dbPwdTest.getResultSet()) { 
      //implement the interface methods 
     }).getString(1).equals(pwd/*need to hash this*/)) 
    { 
     return true; 
    } 
+0

這是一個有趣的方法。使用這種方法,甚至可以在條件中包含整個數據庫查詢,從而使整個方法*真正*一次性。 – Wolfish