首页 > 解决方案 > 在另一个类中调用 get 方法而不在 Java 中创建对象

问题描述

嗨,我是 Java 编程的初学者。正如标题所说,我试图在另一个类中调用 get 方法而不创建对象。get 方法不能是静态的,因为我在给定类的字段中访问私有。我知道如果方法是静态的,我可以在不创建对象的情况下访问常规方法,但是我不能使用简单的 get 方法来做到这一点。我知道这是不可能的,但是有替代方案或其他方法来解决这个问题吗?我有三个班。一个超类,另外两个扩展了这个类。我在其中一个子类中有一个列表,我正在尝试在另一个子类中访问该列表的 get 方法(不确定这是否相关)。该列表在给定类的构造函数中实例化。除了 get 方法之外,我真的没有任何代码,所以代码中没有太多可显示的内容。谢谢。

编辑:

public class A{}

public class B{ 
private List<A> list; 
private B() {
    list = new ArrayList<>();
}
public int getList() {
    return list;
}
}

public class C{
I want to access getList method here. 
}

标签: java

解决方案


在不创建对象的情况下调用函数是没有意义的。方法旨在处理包装在对象内的数据。

如果你有两个子类并且你试图在那个列表中存储一些东西,那么你只需要在你的超类中pull-up列出你的函数或对象。list

在超类构造函数内部,您可以初始化列表。每次创建新对象(在本例中为子类对象)时,它都会有自己的列表。

但是,您尝试做的事情是完全错误的,根本不可能。

public class A extends B{}

public abstract class B{ 
private List<B> list; 

public B() {
    list = new ArrayList<>();
}
protected ArrayList<B> getList() {
    return list;
}
}

public class C extends B{
   //You can now call list method.
}

// 我没有编译它,但它应该可以工作,这就是它应该如何完成的。


推荐阅读