我正在尝试将多个对象类型(String,int,int)传递给另一个package1,并让该package1返回(String,int,int)。但是我想通过传递类而不将原始package2导入package1来执行此操作。
方法1:传递对象列表,然后在调用方将其转换回String / int。 (我读过传递对象是一种忌讳,应该传递类或仅传递一种特定类型)
//package1 - cannot import any other packages
public List<Object> returnvalue (String aString, int aInt, int bInt) {
//Just an example of processed values
aString = aString + "append";
aInt++;
bInt = bInt+2;
List<Object> returnvalue = new ArrayList<>();
returnvalue.add(aString);
returnvalue.add(aInt);
returnvalue.add(bInt);
return returnvalue;
}
//package2 - can import package1 inside
int aInt = 1;
int bInt = 1;
List<Object> receivevalue = package1.returnvalue("aString",aInt,bInt);
String receivestring = (String)receivevalue.get(0);
String receiveint1 = (int)receivevalue.get(1);
String receiveint2 = (int)receivevalue.get(2);
Method2:传递字符串列表,然后在方法内将其转换。 (这样我不传递对象)
//package1 - cannot import any other packages
public List<String> returnvalue (String aString, String aInt, String bInt) {
//Just an example of processed values
aString = aString + "append";
int tmpInt = Integer.valueOf(aInt);
tmpInt++;
aInt = String.valueOf(tmpInt);
int tmpInt2 = Integer.valueOf(bInt);
tmpInt2=tmpInt2-2;
bInt = String.valueOf(tmpInt2);
List<String> returnvalue = new ArrayList<>();
returnvalue.add(aString);
returnvalue.add(aInt);
returnvalue.add(bInt);
return returnvalue;
}
//package2 - can import package1 inside
int aInt = 1;
int bInt = 1;
List<String> receivevalue = package1.returnvalue("aString",aInt,bInt);
String receivestring = receivevalue.get(0);
String receiveint1 = receivevalue.get(1);
String receiveint2 = receivevalue.get(2);
从Ive阅读的内容来看,大多数人似乎建议创建一个类并传递该类,以使其具有类型安全性,并且可读性更高。但是,如果不将package2调用到package1中,我相信这是不可能的吗?而且我想这样做而不导入任何模型类,package1必须完全独立。
我想知道哪种方法最好,是否有更好的方法来实现我想要达到的目标?
您可以定义一个Java类,该类中具有所有三个(String,int,int)属性,然后可以返回它的对象。希望对您有所帮助。
在package1中创建一个POJO类来保存您的输入/输出值e.g:
class Data {
public String s;
public int a1;
public int a1;
}
然后您可以更改以下项的签名:
public List<Object> returnvalue (String aString, int aInt, int bInt)
到
public Data returnValue(Data aData)
UPDATE
假设您在package1中有2个课程
Data.java:
package package1;
public class Data {
public String s;
public int a1;
public int a2;
}
和Solution.java:
package package1;
public class Solution {
public Data returnValue(Data input) {
Data data = new Data();
data.s = input.s + "append";
data.a1 = input.a1 + 1;
data.a2 = input.a2 + 2;
return data;
}
}
您可以在packate2中使用它们,如下所示[[App.java:
package package2;
import package1.Data;
import package1.Solution;
public class App {
public static void main(String[] args) throws Exception {
Data input = new Data();
input.s = "ipsum";
input.a1 = 1;
input.a2 = 2;
Solution solution = new Solution();
Data result = solution.returnValue(input);
// use result
}
}