- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图将多个对象类型(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/
我使用的是 Xcode 8.2.1,我的 swift 版本是 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1) 这是我的 package.swift 内容 imp
utils::install.packages似乎完全有能力安装缺少的依赖项。但是,如果由于某种原因(例如,尝试安装 DiagrammeR 、 Error: package ‘igraph’ was
好吧,第一次尝试编写 R 包,我被卡住了。这是我创建包的方式: package.skeleton("pkg",code_files=some.filenames) roxygenize("okg")
我正在构建一个 Atom 包,并尝试向用户显示项目列表。用户可以搜索这些项目并选择一个。我正在尝试制作一些看起来类似于下面的菜单的东西。 (来源:github-camo.com) 这有点像命令面板,只
我正在尝试使用找到的官方分步页面在 Ubuntu 18.04 上安装 Docker CE 18.03 here .我被困在第 4 步)sudo apt-get update .这就是我得到的: Hit
我们在公司内部针对解决方案设置了 CI。 构建总共花费了大约 13 分钟,这似乎有点太长了。经过一番挖掘,我发现我们没有将 /maxcpucount 开关传递给 msbuild 命令,因此每个项目都是
我正在尝试创建一系列 NuGet 包以在我的组织内本地使用。 我知道我可以创建源代码转换文件(即 MyModel.cs.pp)来帮助添加新源代码文件,即: namespace $rootnamespa
当我加载包含此类的 Monticello 包时,是否有特定的方法会在类中执行? 一个例子: 版本 1, SomeMonticelloPackage-MyName.1.mcz: Object subcl
我正在尝试使用 NuGet 核心创建一个 NuGet 包作为构建过程的一部分。构建过程会创建特定的框架版本 3.5、4.0 和 4.5。如何为每个程序集指定框架版本? public void Crea
这个问题在这里已经有了答案: Failure [INSTALL_FAILED_ALREADY_EXISTS] when I tried to update my application (7 个答案
我最近在 youtube ( https://pub.dev/packages/flutter_bloc ) 上观看了 felix Angelov 的 flutter_bloc 包 (https://
我有两个问题想找出解决方案: 我正在重命名 munin 2.0 包,并且在 RPM 的 SPEC 文件中,我必须废弃原始的 munin 包。 当替换现有的 1.x munin 包作为 munin-no
例如,在尝试安装 R 包时 curl作为 usethis 的依赖项: * installing *source* package ‘curl’ ... ** package ‘curl’ succes
我有一个尝试发送和接收对象的客户端/服务器程序。 一共有三个包:服务器、客户端和共享 shared 只包含 Message 类 我将共享包中的 Message.java 放入与 calcclient
所以我一直在尝试安装一个名为 igraph 的 R 包.最后,当它尝试加载包时,出现以下错误: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15'
我正在尝试安装 Magento 软件包,但我得到No file was uploaded 它来自此代码,因为 $_FILES 是 /downloader/Mged/Controller.php 中的空
我使用的是 Windows,当我想要安装软件包时,出现以下错误: pip install django Requirement already satisfied (use --upgrade to
每当我尝试为 iOS 设置 firebase 时,一切都会正常工作,直到我将“cloud_firestore:”包(或任何其他 FlutterFire 包)添加到 pubspec.yaml 文件夹中。
某些 R 包,例如 mgcv,无法使用 clang 10+ 从源代码编译(在 macOS 10.14 和 R 版本 3.6+ 下)。编译时报错为 ld: unknown option: -platfo
我制作了自己的 cabal 包(我们称之为 package-1),其中包含两个目标,一个库和一个可执行文件。库部分有一个构建依赖列表,而可执行文件有另一个更大的构建依赖列表。 现在我创建了 packa
我是一名优秀的程序员,十分优秀!