2015-12-28 127 views
-2

我不知道这是否可能在Java中,但我想知道是否可以使用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; 

} 

我知道的命名约定是错误的,但它是故意的,因为我甲肝Ë与此程序,以便编码标准是由我公司为

+0

是否有你所需要的创造方法的原因是什么?为什么不用正确的值初始化它?或者你想要改变这些值?在这种情况下,你可以使用set方法来设置对象的值,而不是构造器。 – user3284549

+0

请遵循Java的命名约定。 –

+0

@user我不知道如何在没有构造函数的情况下返回值,是否有您的建议示例? – Trent

回答

-1

我不知道这是否是可能的Java的。 Class是生成Object的原始结构。我们需要一个类来生成对象。所以,对于上面的代码,我不认为有解决方案。

0

Java方法只允许一个返回值。如果您想要返回多个对象/值,请考虑返回其中一个集合。地图,列表,队列等

您选择将取决于您的需求之一。例如,如果要将键值对存储为键值对,请使用Map。如果您只是想按顺序存储值,请使用列表。

与列表一个例子:

list<Object> myList = new ArrayList<Object>(); 
myList.add("Some value"); 
return myList; 

作为一个侧面说明,你的方法创建是多余的。您应该使用getter和setter来填充对象,或通过构造函数填充它。

cl_Object lo_Object = new cl_Object(1, "test01"); 

您现在设置的方式是创建一个对象,以创建另一个具有所需值的相同类型的对象。

你的命名约定也是错误的。请参考Java标准命名约定:

http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-135099.html#367

+0

只是为了解决冗余问题,我如何以不同方式编写创建方法,您是否有示例? – Trent

+0

create将为另一个相同类型的对象设置值。我的意思是你的第一个cl_Object正在创建另一个具有你想要的值的cl_Object。实例化对象时,可以在构造函数中设置值。当你创建你的对象而不是传入0时,并将null传递给构造器中的“1”和“test01”传递。之后检查对象,你会看到它设置了这些值。在java中查看getter和setter约定。这是设置与构造函数一起使用的属性的标准。你可能也想看看访问修饰符:)。 – BeardedDev

相关问题