Class1.java
public List<UMRDTO> getDocumentationList(Session session)
{
List<UMRDTO> documentationList = null;
try
{
Query query = null;
query = session.createQuery(UMRSQLInt.DOCUMENTATION_LIST);
documentationList = query.list();
}
return documentationList;
}
我需要使用返回到静态方法的文档列表,但出现错误,例如无法从静态上下文中引用非静态方法
class2.java
static
{
UMRMetadataSupportDAOImpl d=new UMRMetadataSupportDAOImpl();
listDocuments= d.getDocumentationList(); //error here
for (UMRDocumentationDTO listDoc: listDocuments)
{
if(listDoc.equals(MMTConstantsInt.DOMAIN_NAME))
domainDocumentationMap.put(listDoc.getId().getObjectName(), listDoc.getDocumentationLink());
else
domainComboDocumentationMap.put(listDoc.getId().getObjectName(), listDoc.getDocumentationLink());
}
最佳答案
静态
字段和方法链接到该类。它们可以仅通过类名和点运算符来调用。
非静态
字段和成员链接到类的实例
。他们需要一个要调用的类的对象。在同一个类中,有一个特殊的引用,它引用当前正在执行的对象,称为this
。
类是一个蓝图
,它的实例是该蓝图的实现。当一个对象被创建时,就会在内存中分配空间。我们在对象上调用非静态方法。
您的方法 getDocumentationList
是非静态的,这意味着它需要 class1 的对象,以便可以在该对象上调用它。您使用类名来调用它,而不是需要创建一个对象,然后调用该方法。
第二个选项是将 getDocumentationList
声明为静态。
关于java - 来自另一个类的非静态方法到静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42135449/