【发布时间】:2015-12-28 17:39:30
【问题描述】:
我不知道这在 Java 中是否可行,但我想知道是否可以在 Java 中使用对象来返回多个值而不使用类。
通常当我想在 Java 中执行此操作时,我会使用以下代码
public class myScript {
public static void main(String[] args) {
// initialize object class
cl_Object lo_Object = new cl_Object(0, null);
// populate object with data
lo_Object = lo_Object.create(1, "test01");
System.out.println(lo_Object.cl_idno + " - " + lo_Object.cl_desc);
//
// code to utilize data here
//
// populate object with different data
lo_Object = lo_Object.create(2, "test02");
System.out.println(lo_Object.cl_idno + " - " + lo_Object.cl_desc);
//
// code to utilize data here
//
}
}
// the way I would like to use (even though it's terrible)
class cl_Object {
int cl_idno = 0;
String cl_desc = null;
String cl_var01 = null;
String cl_var02 = null;
public cl_Object(int lv_idno, String lv_desc) {
cl_idno = lv_idno;
cl_desc = lv_desc;
cl_var01 = "var 01";
cl_var02 = "var 02";
}
public cl_Object create(int lv_idno, String lv_desc) {
cl_Object lo_Object = new cl_Object(lv_idno, lv_desc);
return lo_Object;
}
}
// the way I don't really like using because they get terribly long
class Example {
int idno = 0;
String desc = null;
String var01 = null;
String var02 = null;
public void set(int idno, String desc) {
this.idno = idno;
this.desc = desc;
var01 = "var 01";
var02 = "var 02";
}
public int idno() {
return idno;
}
public String desc() {
return desc;
}
public String var01() {
return var01;
}
public String var02() {
return var02;
}
}
在 Javascript 中考虑到这似乎需要做很多工作(我知道它们是不同的)我可以达到同样的效果
var lo_Object = f_Object();
console.log(lo_Object["idno"] + " - " + lo_Object[desc]);
function f_Object() {
var lo_Object = {};
lo_Object = {};
lo_Object["idno"] = 1;
lo_Object["desc"] = "test01";
return lo_Object;
}
注意
我知道命名约定是错误的,但这是故意的,因为我有一个与该程序一起运行的 informix-4gl 程序,因此编码标准来自我工作的公司
【问题讨论】:
-
是否有需要 create 方法的原因?为什么不直接用正确的值初始化它呢?还是您希望能够更改这些值?在这种情况下,您可以只使用 set 方法来设置对象的值,而不是创建构造函数。
-
请遵循 Java 的命名约定。
-
@user 我不知道如何在没有构造函数的情况下返回值,有你建议的例子吗?
-
如果变量是公开的,您可以在不使用 get 方法的情况下访问它们,否则您必须使用方法来获取值。如果您不需要更改值,您可以使用正确的值初始化对象。
-
@user 哦,我明白了,这对我不起作用,因为我将使用不同的值作为参数多次调用该方法
标签: java object methods return-value