0

对 Java 很陌生,所以请多多包涵。我在 java 类中有一个实用方法,它只获取您所在的页面标题。

public class BasePageTitle{ 
    public Page getPageTitle(){
        page.title;    
    }
}

我正在尝试在新课程中使用它,但不知道我做错了什么。

import com.models.pageTitle;

public String headerMeta;
public String keywords;

public class HeaderComponent{
headerMeta = "Page Title" + getPageTitle;    
keywords = "Description" + getPageTitle;
}

我似乎得到的错误是“方法 getPageTitle 未定义”但我迷路了,因为在我的模型类中我正在导入实用程序类并认为我可以引用 getPageTitle 方法。我在这里错过了什么吗?

4

5 回答 5

3
  1. getPageTitle是一种方法,因此必须使用这样的括号来激活:getPageTitle()不是这样:getPageTitle
  2. 因为getPageTitle不是静态方法 - 您应该创建一个实例BasePageTitle以便调用它,实现此目的的方法之一是BasePageTitle像 MadProgrammer 建议的那样扩展类
  3. 您在课堂之外声明 - 此代码headerMeta甚至无法编译!keywordsHeaderComponent
  4. 您不能只headerMeta = "Page Title" + getPageTitle;在类内部调用,为了初始化参数,您必须在构造函数、setter、静态初始化程序或初始化块中执行它

你可能想做这样的事情:

import com.models.pageTitle;

public class HeaderComponent{
    public String headerMeta;
    public String keywords;
    private BasePageTitle bpt = new BasePageTitle();

    // this is the constructor - which is used to create instances of this class
    // and (mostly) to initialize object variables 
    public HeaderComponent(){
       headerMeta = "Page Title" + bpt.getPageTitle();    
       keywords = "Description" + bpt.getPageTitle();
    }

}
于 2013-09-24T01:18:04.293 回答
0

为了HeaderComponent使用这种方法,它必须extendBasePageTitle...

public class HeaderComponent extends BasePageTitle {...

这是继承的基础。有关更多详细信息,请参阅继承跟踪

于 2013-09-24T01:12:08.470 回答
0

两件事情:

1-该方法是实例方法,而不是简单的实用程序或辅助方法。您需要实例化BasePageTitle.

2-您错误地调用了该方法。在 java 方法调用中需要括号,即使该方法不带参数。此外,它必须在方法(如果它是实例方法)或类(如果是静态)上调用,例如basePageObject.getPageTitle()

于 2013-09-24T01:17:42.750 回答
0

您可以像其他答案所说的那样扩展它(继承),或者您可以只实例化一个类BasePageTitle并获取标题,因为它是一个公共的非静态类。但为此,您的类BasePageTitle需要一个字段和一个构造函数:

public class BasePageTitle{
    String title;

    public BasePageTitle (String title){
        this.title = title;
    }
    public String getPageTitle(){
        return this.title;    
    }
}

然后在你的另一堂课上

public class HeaderComponent{
    //at some point you have to create the title
    BasePageTitle page = new BasePageTitle("title here");


    headerMeta = "Page Title" + page.getPageTitle();    
    keywords = "Description" + page.getPageTitle();
}

观察:

你的方法public Page getPageTitle()没有做任何事情,因为没有return. 你必须写return this.title;

于 2013-09-24T01:20:27.350 回答
0

您可以将 getPageTitle 方法设为静态

public static Page getPageTitle()

然后打电话

BasePageTitle.getPageTitle();
于 2013-09-24T01:24:47.510 回答