【问题标题】:Can you set a multi-object array and call a method from it?你能设置一个多对象数组并从中调用一个方法吗?
【发布时间】:2017-07-24 08:27:06
【问题描述】:

确切地说,我很好奇 Object[] 数组是否能够存储和访问其他对象的方法。这是我正在努力实现的一个小例子。

//declare an array of *different* objects
private static Object[] function = {new Object1(),
                                    new Object2()}; 
//calls method(getNumber) from Object1()
function[0].getNumber();

由于我已经发现可以将相同的对象堆叠到一个数组中,我想弄清楚是否可以在不使用 ArrayList 的情况下使用不同的方法来实现。只是好奇,所以如果你认为没有办法做到这一点,请告诉我,谢谢:)

【问题讨论】:

  • 在单独声明它们的同时直接从对象中调用它可能更容易,对吧?
  • 你可以做到,需要演员:(Object1)function[0].myObjectMethod();
  • 为什么铸造有效?是不是因为数组本身只声明为 Object[] 类型的数组?对不起,这些 qns,我在不到半年前才开始编码:P
  • 任何对象数组,比方说,MyObject[],在最基本的概念中是一个引用 MyObject 的对象列表
  • 强制转换有效,因为这是在运行时完成的。不是在编译时。因此,它会将您的 Object 放入您所期望的内容中。

标签: java arrays object methods


【解决方案1】:

我不确定你在问什么,但你应该在调用普通对象的方法之前进行转换。 而不是这个:

function[0].getNumber();

你应该这样做:

((MyType) function[0]).getNumber();

【讨论】:

【解决方案2】:

如果您要调用的方法对于所有对象都相同,并且您控制它们的类,则应将方法提取到接口中,并让类实现它。

这样你就可以拥有一个CommonInterface[] 数组...

public CommonInterface { Number getNumber(); }

CommonInterface[] function = { new Object1(), new Object2() };
function[1].getNumber()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2021-10-17
    • 2018-11-30
    相关资源
    最近更新 更多