不能将对象的实例方法作为类变量访问

Posted

技术标签:

【中文标题】不能将对象的实例方法作为类变量访问【英文标题】:no access to instance method of an object as a class variable 【发布时间】:2022-01-05 18:56:43 【问题描述】:
package com.company;

public class UnlimitedBuffer 
//Variabels
public Object object;  

//Constructor
public UnlimitedBuffer(ObjectBufferRing object)
    this.object = object;


//Methods
public static void main(String[] args)
    ObjectBufferRing obr = new ObjectBufferRing(10); //Object of another Class "ObjectBufferRing"
    UnlimitedBuffer ubr = new UnlimitedBuffer(obr); 
    ubr.object.printArray();


我试图访问对象“object”的实例方法“printArray()”,该方法被保存为另一个类对象“ubr”的类变量。 但不幸的是,它没有找到该对象的实例方法“printArray()”或任何其他类成员(变量/方法)。 (两个类都在同一个包中) 相反,我得到了这个错误输出:

java: 找不到符号

符号:方法 printArray()

位置:java.lang.Object 类型的变量对象

【问题讨论】:

如果您想访问自己的方法,为什么将对象保存为Object 而不是ObjectBufferRingObject 显然对这种方法一无所知 【参考方案1】:

告诉Java忘记了object是一个带有printArray方法的ObjectBufferRing,当你写public Object object;而不是public ObjectBufferRing object;时。

Java 正在按照你的吩咐去做。

【讨论】:

以上是关于不能将对象的实例方法作为类变量访问的主要内容,如果未能解决你的问题,请参考以下文章

Java中类方法与实例方法的区别

类方法和实例方法

objc中的类方法和实例方法有什么本质区别和联系

Python 面向对象

类,对象和方法

Java中的静态和枚举