没有类的 Java 对象

标签 java object methods return-value

我不知道这在 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 程序,因此编码标准来 self 工作的公司

最佳答案

最好的方法是使用 HashMap

import java.util.HashMap;

public class Main {
    public static void main(String[] args) {
        HashMap<String, Object> person =
            new HashMap<String, Object>();
        
        // add elements dynamically
        person.put("name", "Lem");
        person.put("age", 46);
        person.put("gender", 'M');

        // prints the name value
        System.out.println(person.get("name")); 
       
        // asures that age element is of integer type before  
        // printing
        System.out.println((int)person.get("age"));
        
        // prints the gender value
        System.out.println(person.get("gender"));
       
        // prints the person object {gender=M, name=Lem, age=46}
        System.out.println(person); 
    }
}

这样做的好处是您可以随时添加元素。 这样做的缺点是您将失去类型安全性,就像 age 的情况一样。确保年龄始终是整数是有代价的。因此,为了避免这种成本,只需使用一个类。

关于没有类的 Java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34498085/

相关文章:

java - AngularJS + Spring 项目架构

java - 返回数组总和的 toString 方法和递归方法中的错误

java - 努力为链表创建替换方法

java - 如何存储从以数组作为参数且返回类型为 double 的方法传递的值?

java - 在方法中删除表的元素

JAVA 无法在 main from 方法中访问我的数组

java - Spring和后台线程执行

java - 使用 -source 和 -target javac 选项编译

java - 如何使用 Hibernate Context session 创建通用 DAO 类

javascript - 基于计数器出现的对象