Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将默认和可选参数传递到Java中类似python的函数中_Java_Maven - Fatal编程技术网

如何将默认和可选参数传递到Java中类似python的函数中

如何将默认和可选参数传递到Java中类似python的函数中,java,maven,Java,Maven,我试图将python库迁移到java本机脚本中,但在迁移过程中,我面临着参数的极端复杂性 下面是我需要将带有不同数据类型的默认和可选参数的python方法迁移到java方法中的代码: def connect_network(self, bssid=None, proto="http", check_redirect_code=True

我试图将python库迁移到java本机脚本中,但在迁移过程中,我面临着参数的极端复杂性

下面是我需要将带有不同数据类型的默认和可选参数的python方法迁移到java方法中的代码:

def connect_network(self,
                        bssid=None,
                        proto="http",
                        check_redirect_code=True,
                        redirect_code='302',
                        portal_url=None,
                        subscriber_portal='scg',
                        expect_href_list_zd_sp='google',
                        check_user_block=False,
                        redirect_url='',
                        tnc_content="",
                        path="/tmp/"):
   pass
下面是我用java等效语言尝试的示例代码:

public class LinuxClientUtils {

public void DefaultNameParameter1(HashMap<Integer, String> params){
    System.out.Println(params.toString());
}

public void DefaultNameParameter2(Map.Entry<String, String>... params){
    System.out.Println(params.toString());
}

public void DefaultNameParameter3(Optional<String> name, Optional<String> age){
    System.out.Println(name.toString());
}
 

}
尽管如此,这些方法没有一个不起作用

我尝试了以下URL的几种方法 但我无法从这些链接中找到答案。
我是JAVA编程新手,还没能解决这个问题。任何帮助都会很好,谢谢。

为参数对象创建一个新类。它将每个参数作为一个字段

此参数类的构造函数没有参数。相反,每个字段都有一个默认值。默认情况下,对象字段和布尔字段会自动指定null和false

您的函数将只接受一个参数对象作为单个参数

 public class A {

    static class ParameterObject {
        public ParameterObject(){
            //empty
        }
        private int x;
        private boolean b;
        private String s;

        public int getX() {
            return x;
        }

        public void setX(int x) {
            this.x = x;
        }

        public boolean isB() {
            return b;
        }

        public void setB(boolean b) {
            this.b = b;
        }

        public String getS() {
            return s;
        }

        public void setS(String s) {
            this.s = s;
        }
    }

    public static void f(ParameterObject o){
        //Do something with object
    }
    public static void main(String[] args) {
        ParameterObject paramObj=new ParameterObject();
        paramObj.setX(10);
        f(paramObj);
    }
}

这是否回答了您的问题:我不想使用任何方法重载,这里的方法与python一样简单,我需要毫不费力地传递默认/可选参数。@Pradam,Java是一种严格类型化的语言,在这种语言中不可能做与python相同的事情。可以将参数作为封装所有字段的对象进行传输。并使用生成器模板创建此对象。请与我共享任何对我非常有用的链接或示例。正如我提到的,我是java新手,我添加了一个代码示例
 public class A {

    static class ParameterObject {
        public ParameterObject(){
            //empty
        }
        private int x;
        private boolean b;
        private String s;

        public int getX() {
            return x;
        }

        public void setX(int x) {
            this.x = x;
        }

        public boolean isB() {
            return b;
        }

        public void setB(boolean b) {
            this.b = b;
        }

        public String getS() {
            return s;
        }

        public void setS(String s) {
            this.s = s;
        }
    }

    public static void f(ParameterObject o){
        //Do something with object
    }
    public static void main(String[] args) {
        ParameterObject paramObj=new ParameterObject();
        paramObj.setX(10);
        f(paramObj);
    }
}