我最近开始用Java编写android应用程序,我是Java的新手,我在大学里用c ++编写面向对象编程的基础知识。我的问题是,什么是好的和坏的练习将变量数据传递给Java中的不同方法?例如,我在代码中一直在做的事情是:
String one;
String two;
String three;
String four;
exampleOne(one, two, three, four);
exampleOne(String one, String two, String three, String four) {
// do something
exampleTwo(one, two, three, four);
}
exampleTwo(String one, String two, String three, String four) {
// do something
exampleThree(one, two, three, four);
}
exampleThree(String one, String two, String three, String four) {
// do something
}
在我的代码中,我做了类似这样的事情,我将参数传递了5次,这是不好的做法吗?什么是更清洁的生态选择?
答案 0 :(得分:2)
如果有很多参数并且它们会被多次传递,我会选择DTO对象。
创建一个Pojo类,它封装这些参数并在方法之间传递实例。您也可以在DTO中添加一些辅助函数/方法,以简化某些处理。
答案 1 :(得分:1)
嗯,当您想要使用某些属性调用方法时,需要传递参数,但是对于相同类型的大量参数,您可以使用以下内容。
您可以改为使用VarArgs
。
public void Method(String.. str) {
//Here you will have Array str[](Of String)
if(str!=null)
for (String s: str)
System.out.println(s);//Iterate through Array for More Processing
}
如果你想传递其他参数
Method(int i, String... Other) {
//VarArgs Must be Last
}
注:的 传递不同类型的参数并使用转换方法将String转换为Double,Int等(这是不推荐的,但可以这样做,因为你需要确保你在哪个地方传递了double,int等)
答案 2 :(得分:1)
你做了什么没有错,但你可以使用varargs(如TAsk所述)或通过创建一个代表一组参数的小容器类(如ac结构,通常称为bean)来澄清事情。
这使您可以整理东西并使代码更具可读性。 请注意,在创建类时,由于新的分配会引入一些开销,而c-struct则不然,因为它是管理对struct成员的引用的编译器。
参数在堆栈中传递,就像在c中一样,并且java中没有by-reference-arguments的概念,使用bean可以克服这个限制。
答案 3 :(得分:1)
声明这样的类可能很有用:
public class YourClass{
private String one;
private String two;
private String three;
private String four;
public YourClass(String one, String two, String three, String four){
this.one = one;
this.two = two;
this.three = three;
this.four= four;
}
public void exampleOne() {
// do something
exampleTwo();
}
public void exampleTwo() {
// do something
exampleThree();
}
public void exampleThree() {
// do something
}
}
并使用它:
YourClass c = new YourClass(one, two, three, four);
c.exampleOne();