Java 构造函数不可见
我正在开发一个Android应用程序,它利用了这个对象。该对象的形式为:Java 构造函数不可见,java,android,overriding,Java,Android,Overriding,我正在开发一个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 exte
[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;
}
}
但是,当我尝试此操作时,会出现以下错误:
构造函数ScanResult()不可见
。我如何解决这个问题?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)
您需要使用匹配的参数调用超类显然是很好的方法:
ScanResult
需要参数:
public ScanResult( String SSID,
String BSSID,
String caps,
int level,
int frequency)
您可以检查类定义
丑陋的方式:
正如您所说,显然,ScanResult
是私有的。告诉您使用反射来访问构造函数
可能是唯一的方法:
没人知道这是怎么发生在你身上的(其实很奇怪)。但是有一个改变来解决它。点击链接,将类复制到您的项目中(当然,为您的项目更改它的包),然后只需将
MyScanResult
从该类继承即可。Android是开源的,尽管这个类在未来可能会发生变化,但您可以确保它现在就可以工作。然后,如果需要基本类,您可以尝试使用(android.net.wifi.ScanResult)ScanResult来强制转换新的ScanResult
。显然是一种好方法:
ScanResult
需要参数:
public ScanResult( String SSID,
String BSSID,
String caps,
int level,
int frequency)
您可以检查类定义
丑陋的方式:
正如您所说,显然,ScanResult
是私有的。告诉您使用反射来访问构造函数
可能是唯一的方法:
没人知道这是怎么发生在你身上的(其实很奇怪)。但是有一个改变来解决它。点击链接,将类复制到您的项目中(当然,为您的项目更改它的包),然后只需将MyScanResult
从该类继承即可。Android是开源的,尽管这个类在未来可能会发生变化,但您可以确保它现在就可以工作。然后,如果需要原语类,可以尝试使用(android.net.wifi.ScanResult)ScanResult来强制转换新的ScanResult
。构造函数ScanResult(String,String,String,int,int)未定义
这是。如果您使用的是Eclipse,请执行CTRL+SPACE并验证您是否匹配了超类参数。我的ScanResult类具有以下构造函数:ScanResult()代码>。问题是它不是公共的android.net.wifi。ScanResult
没有任何默认构造函数,无论是私有的还是其他的。您正在使用当前版本吗?是的,我有最新的SDK构造函数扫描结果(String,String,String,int,int)未定义
这是最新版本。如果您使用的是Eclipse,请执行CTRL+SPACE并验证您是否匹配了超类参数。我的ScanResult类具有以下构造函数:ScanResult()代码>。问题是它不是公共的android.net.wifi。ScanResult
没有任何默认构造函数,无论是私有的还是其他的。您使用的是当前版本吗?是的,我有最新的SDK构造函数ScanResult(String,String,String,int,int)未定义
您使用的是哪个ScanResult
?您正在使用com.amazonaws.services.dynamodb.model.ScanResult
?android.net.wifi.ScanResult
好的,最后一次机会,检查我的第二个(希望不是)或第三个解决方案。构造函数ScanResult(String,String,String,int,int,int)未定义
您使用的ScanResult
?您正在使用com.amazonaws.services.dynamodb.model.ScanResult
?android.net.wifi.ScanResult
好的,最后一次机会,检查我的第二个(希望不是)或第三个解决方案。