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