【问题标题】:Create a method with unknown number and type of arguments in java在java中创建一个具有未知数量和类型的参数的方法
【发布时间】:2014-02-14 12:19:27
【问题描述】:

我正在使用 primefaces 数据表,同时我正在使用三重数据存储 (Jena TDB) 而不是传统数据库。我将创建一个对象,例如下面的 primefaces 展示示例; 公共类汽车 {

    private String model;
    private int year;
    private String manufacturer;
    private String color;

    public Car(String model, int year, String manufacturer, String color) {
            this.model = model;
            this.year = year;
            this.manufacturer = manufacturer;
            this.color = color;
    }

    public String getModel() {
            return model;
    }

    public void setModel(String model) {
            this.model = model;
    }

    public int getYear() {
            return year;
    }

    public void setYear(int year) {
            this.year = year;
    }

    public String getManufacturer() {
            return manufacturer;
    }

    public void setManufacturer(String manufacturer) {
            this.manufacturer = manufacturer;
    }

    public String getColor() {
            return color;
    }

    public void setColor(String color) {
            this.color = color;
    }

}

这里一切都很清楚,汽车对象具有明确的参数,例如型号、年份……但是在我的程序中,基于用户从菜单栏中选择的选项,我必须调用具有各种属性的完全不同的对象作为参数并执行相同的操作如陈列柜所示。我对java很陌生,我真的很困惑如何解决这个问题。 例如,我的程序对象可以是具有(名称、地址、电子邮件、电话、...)参数的公司,也可以是具有完全不同属性的机器,例如(名称、型号、生产日期、规格等) .

提前感谢您的回复。

【问题讨论】:

  • 客户端(调用代码)需要对这些对象做什么?
  • 1.只需对具有不同属性的对象进行排序,然后将它们返回给用户。 2. 稍后,算法使用这些属性数量根据提供的标准选择最合适的对象。但现在我只想在数据表中调用这些对象并对它们进行排序!!
  • 你有没有想过创建一个所有这些对象都可以实现的接口?然后您可以将所有对象视为同一类型。也许它包含一个setField(String fieldName, Object value) 方法和对象处理设置字段。
  • 不,我没有。我要试试这个!一个新的想法。谢谢凯文!!
  • 如果您需要任何指导,请告诉我。我的个人资料中的博客包含我的电子邮件。

标签: java primefaces datatable variadic-functions


【解决方案1】:

不完全理解您提供的解释。我可以针对你的标题给你一个答案:在 java 中创建一个参数数量和类型未知的方法

您可以将 Java args 与 Object 类一起使用。

package com.misc;

public class NNumberOfObj {
    public static void acceptNNumberOfAnyTypeofObjects(Object... args) {
        System.out.println("Total objects are: " + args.length);
        //Your further implementation goes here.
    }
    public static void main(String[] args) {
        String s = new String("Nikhil");
        Integer i = 10;
        Employee emp = new Employee(10, "Kunal");
        acceptNNumberOfAnyTypeofObjects(s, i, emp);
    }
}

class Employee {
    private int id;
    private String name;
    public Employee(int id, String name) {
        this.id = id;
        this.name = name;
    }
}

【讨论】:

  • 请说明它是如何使用和实现的。
  • 我知道 varags 是如何工作的,我只是认为你应该证明 args 是一个数组,但我认为你仍然没有。无论如何 +1。
  • 您好,我只是想证明 args 数组可以接受任意数量和类型的参数。对不起,如果你期待别的东西。
  • 非常感谢您的回答。我的问题正是在这里,您知道员工类别,并且您正在为您的员工分配 id 和 name 参数,但是在我的模型(本体模型)中,有太多类型的对象具有完全不同的属性和参数,并且基于用户选择我想打电话给他们!看起来很奇怪,但我不知道如何解释!实际上我使用了可变参数,但我得到了任何结果。因为稍后我必须为不同的属性定义 get set 方法,就像您在员工类中为 id 和 name 所做的那样。
  • 您可以使用Object作为方法参数,然后每次使用instanceof运算符检查对象类型。
猜你喜欢
  • 2022-12-01
  • 2021-10-02
  • 1970-01-01
  • 1970-01-01
  • 2012-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多