构造函数不可见

问题描述:

我正在开发一个使用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。我该如何解决这个问题?

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

的明显好办法调用父类:

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