Java 构造函数不可见

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

我正在开发一个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;
    }

}

但是,当我尝试此操作时,会出现以下错误:
构造函数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
好的,最后一次机会,检查我的第二个(希望不是)或第三个解决方案。