gpt4 book ai didi

java - 当我调用不同的包时,如何在 Java 中返回多个对象类型(String、int、int)?

转载 作者:行者123 更新时间:2023-12-02 00:15:19 24 4
gpt4 key购买 nike

我试图将多个对象类型(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);

方法2:传递一个字符串列表,并在方法内对其进行转换。 (这样我就不会传递对象)

//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);

从我读到的内容来看,大多数人似乎建议创建一个类并传递该类,这样它就具有类型安全性并且更具可读性。但是,如果不将 package2 调用到 package1 中,我相信这是不可能的?我想在不导入任何模型类的情况下执行此操作,package1 必须完全独立。

我想知道哪一个是最好的,是否有更好的方法来实现我想要实现的目标?

最佳答案

在package1中创建一个POJO类来保存您的输入/输出值例如:

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)

更新

假设 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
}
}

关于java - 当我调用不同的包时,如何在 Java 中返回多个对象类型(String、int、int)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58090375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com