您好,我是Java编程的初学者。正如标题所说,我试图在不创建对象的情况下在另一个类中调用get方法。 get方法不能是静态的,因为我在给定类的字段中访问private。我知道如果方法是静态的,我可以在不创建对象的情况下访问常规方法,但我不能通过简单的get方法来实现。我知道这是不可能的,但有替代方法或其他方法来解决这个问题吗?我有三节课。一个超类和另外两个扩展了这个类。我在其中一个子类中有一个List,我试图在另一个子类中访问该列表的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.
}
答案 0 :(得分:0)
在不创建对象的情况下调用函数没有意义。方法用于处理打包在对象内的数据。
如果你有两个子类并且你试图在该列表中存储某些内容,那么你只需要在你的超类中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.
}
//我没有编译它,但它应该可以工作,这就是它应该如何完成。
答案 1 :(得分:0)
这个问题毫无意义。
根据定义,类函数可以是静态的(独立于实例)或非静态的(每个实例)。您提到get函数不能是静态的,因此它必须是实例绑定的 - 这种类型的函数将用于安全地访问实例值。
私有变量通常是内部类实例变量。如果您没有创建对象,则没有实例可以运行get函数。
假设您有一个具有私有实例变量Color,Flavor和Weight的类Fruit,以及每个变量的“get”函数。一个静态的“获取”功能是没有意义的 - 你是否会检索所有已知水果的味道,尽管他们不知道它们代表什么水果?废话!您需要拥有该类的实例,在这种情况下,您可以使用get函数来读取实例变量。