在没有在Java

时间:2018-05-07 19:26:05

标签: java

您好,我是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. 
}

2 个答案:

答案 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函数来读取实例变量。