java - 来自另一个类的非静态方法到静态方法

标签 java

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/

相关文章:

java - 为什么即使在不兼容的对象版本之间,java 反/序列化也会成功?

java - 使用 JTable 单元格编辑器

java - 如何为 Play Framework 项目编写 Maven POM 文件?

java - 使用 Flying Saucer 从 XHtml 源文本生成 PDF 的代理问题

java - 设置组件外观

java - JLabel中图片的变化

java - BIRT 报表设计器看不到我的 java 类

java - 负输入的验证

java 字符串索引越界错误

java - Android - 删除数据库中的行