构造函数不可见
我正在开发一个使用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)
您需要相匹配的参数
的明显好办法调用父类:
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
。
'构造函数ScanResult(String,字符串,字符串,int,int)未定义' – user1135357 2013-04-08 18:50:53
您正在使用哪个'ScanResult'?你在使用'com.amazonaws.services.dynamodb.model.ScanResult'吗? – Korcholis 2013-04-08 19:02:43
'android.net.wifi。ScanResult' – user1135357 2013-04-08 19:03:52
'构造函数ScanResult(String,String,String,int,int)未定义' – user1135357 2013-04-08 18:50:00
这是[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
。我的ScanResult类具有以下构造函数:'ScanResult();'。问题在于它不是公开的 – user1135357 2013-04-08 18:55:20