实例化单例构造函数-Error:类型中的构造函数无法应用于给定类型



我正在使用Github上的Gautamv/j4gpg的Gopigo3类来控制DexterIndustries的Gopigo3板。该代码不是DexterIndustries的官方,而是DexterIndustries制作的Python库中的Java端口。

我只是在试图测试代码,而无法创建Gopigo3类的实例。我正在使用BlueJ,在BlueJ中制作了Gautamv的代码,然后将Gopigo3类导入到演示类中。

我的研究使我相信Gopigo3类被设计为单身人士,以确保仅创建一个实例并具有超载的构造函数以允许其实例化。

这是Gopigo类的相关代码:


    private static GoPiGo3 _instance; 
    public static GoPiGo3 Instance() throws IOException, FirmwareVersionException{
        if (_instance == null) {
            _instance = new GoPiGo3(8, true);
        }
        return _instance;
    }
    public static GoPiGo3 Instance(int addr) throws IOException, FirmwareVersionException{
        if (_instance == null) {
            _instance = new GoPiGo3(addr, true);
        }
            return _instance;
    }
    public static GoPiGo3 Instance(boolean detect) throws IOException, FirmwareVersionException{
        if (_instance == null) {
            _instance = new GoPiGo3(8, detect);
        }
        return _instance;
    }
    public static GoPiGo3 Instance(int addr, boolean detect) throws IOException, FirmwareVersionException{
        if (_instance == null) {
            _instance = new GoPiGo3(addr, detect);
        }
        return _instance;
    }
    private GoPiGo3(int addr, boolean detect) throws IOException, FirmwareVersionException {
        SPIAddress = addr;
        spi = SpiFactory.getInstance(SpiChannel.CS1, // Channel 1
                500000, // 500 kHz
                SpiMode.MODE_0); // Mode 0
        if (detect) {
            //does detect stuff
        }

预期的结果是Gopigo3类的初始化对象。代码当前不编译。Gopigo类无错误地编译,但是试图初始化Gopigo类的演示类却没有。

我的实例化尝试是

GoPiGo3 platform = new GoPiGo3();

导致以下错误:

com.j4gpg3.control.gopigo3类中的constructor gopigo3不能应用于给定类型: 必需:int.boolean
发现:没有争论
原因:实际和正式的参数列表的长度有所不同 您在这里使用的操作员不能用于您使用的值类型。您要么在此处使用错误的类型,要么是错误的操作员。

我尝试时:

GoPiGo3 platform = new GoPiGo3(8,true);

导致以下错误:

gopigo3(int,boolean(在com.j4gpg3.control.gopigo3

中具有私人访问权限

正如您所说的,它是使用单例模式实现的,因此您需要使用Instance方法而不是构造函数。由于构造函数private GoPiGo3(int addr, boolean detect)...上的私有修饰符,只能从Gopigo3类中调用。

public static GoPiGo3 Instance() throws IOException, FirmwareVersionException{
    if (_instance == null) {
        _instance = new GoPiGo3(8, true);
    }
    return _instance;
}
public static GoPiGo3 Instance(int addr) throws IOException, FirmwareVersionException{
    if (_instance == null) {
        _instance = new GoPiGo3(addr, true);
    }
        return _instance;
}
public static GoPiGo3 Instance(boolean detect) throws IOException, FirmwareVersionException{
    if (_instance == null) {
        _instance = new GoPiGo3(8, detect);
    }
    return _instance;
}
public static GoPiGo3 Instance(int addr, boolean detect) throws IOException, FirmwareVersionException{
    if (_instance == null) {
        _instance = new GoPiGo3(addr, detect);
    }
    return _instance;
}

要获得GoPiGo3实例,您需要做:

GoPiGo3 platform = GoPiGo3.Instance(8,true);

参考:

https://www.geeksforgeeks.org/singleton-class-java/

相关内容

  • 没有找到相关文章

最新更新