2013-04-08 82 views
0

我正在開發一個使用ScanResult對象的Android應用程序。這個對象是形式:構造函數不可見

[SSID: __mynetwork__, BSSID: 00:0e:2e:ae:4e:85, capabilities: [WPA-PSK-TKIP][ESS], level: -69, frequency: 2457, timestamp: 117455824743] 

我試圖重寫此類的equals()方法通過創建我自己的類延伸ScanResult

public class MyScanResult extends ScanResult { 

    public MyScanResult() { 
     super(); 
    } 

    @Override 
    public boolean equals(Object o) { 
     if (this == o) 
      return true; 
     if (!(o instanceof ScanResult)) 
      return false; 

     ScanResult obj = (ScanResult) obj; 
     if (!BSSID.equals(obj.BSSID)) 
      return false; 
     if (!SSID.equals(obj.SSID)) 
      return false; 
     if (!capabilities.equals(obj.capabilities)) 
      return false; 
     if (frequency != obj.frequency) 
      return false; 
     if (level != obj.level) 
      return false; 

     return true; 
    } 

} 

然而,當我嘗試,我得到出現以下錯誤:The constructor ScanResult() is not visible。我該如何解決這個問題?

回答

5

ScanResult公共構造方法的簽名是:

public ScanResult(String SSID, String BSSID, String caps, int level, int frequency) 

您需要相匹配的參數

+0

'構造函數ScanResult(String,String,String,int,int)未定義' – user1135357 2013-04-08 18:50:00

+0

這是[ScanResult的源代碼](http://grepcode.com/file/repository.grepcode.com/java/ext /com.google.android/android/4.0.1_r1/android/net/wifi/ScanResult.java)。如果您使用的是Eclipse,請執行CTRL + SPACE並驗證您是否匹配了我所做的超類參數 – Reimeus 2013-04-08 18:53:01

+0

。我的ScanResult類具有以下構造函數:'ScanResult();'。問題在於它不是公開的 – user1135357 2013-04-08 18:55:20

0

的明顯好辦法調用父類:

ScanResult預計參數:

public ScanResult( String SSID, 
        String BSSID, 
        String caps, 
        int level, 
        int frequency) 

您可以檢查類定義here

醜陋的方式

正如你所說,顯然ScanResult是私人的。 This answer告訴你使用反射去構造函數。

可能爲唯一的辦法

沒人知道發生了這種事情(它實際上是奇怪)。但是有一個改變來解決它。點擊here鏈接,將該類複製到您的項目中(當然,請更改它的包裝),然後讓MyScanResult繼承此項目。 Android是開源的,儘管這個類可能會在未來發生變化,但您確保它現在可以正常工作。然後,如果您需要原始類,則可以使用(android.net.wifi.ScanResult)scanResult來嘗試使用新的ScanResult

+0

'構造函數ScanResult(String,字符串,字符串,int,int)未定義' – user1135357 2013-04-08 18:50:53

+0

您正在使用哪個'ScanResult'?你在使用'com.amazonaws.services.dynamodb.model.ScanResult'嗎? – Korcholis 2013-04-08 19:02:43

+0

'android.net.wifi。ScanResult' – user1135357 2013-04-08 19:03:52

相關問題