Java - 在模型类中使用实用程序方法

时间:2013-09-24 01:07:37

标签: java

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方法。我在这里错过了什么吗?

5 个答案:

答案 0 :(得分:3)

  1. getPageTitle是一种方法,因此必须使用这样的括号激活:getPageTitle()不是这样的:getPageTitle
  2. 因为getPageTitle不是静态方法 - 你应该创建一个BasePageTitle的实例来调用它,其中一个方法是扩展类BasePageTitle,就像MadProgrammer一样建议
  3. 您在课程headerMeta之外宣布了keywordsHeaderComponent - 此代码甚至无法编译!
  4. 你不能只在类中调用headerMeta = "Page Title" + getPageTitle;,以便在a:constructor,setter,static initializer或initialization block
  5. 中初始化你必须执行的参数。

    你可能想做这样的事情:

    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();
        }
    
    }
    

答案 1 :(得分:0)

要让HeaderComponent使用此方法,必须extend来自BasePageTitle ...

public class HeaderComponent extends BasePageTitle {...

这是继承的基础。有关详细信息,请参阅Inheritance trail

答案 2 :(得分:0)

两件事:

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

的实例

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

答案 3 :(得分: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;

答案 4 :(得分:0)

您可以将getPageTitle方法设为静态

public static Page getPageTitle()

然后致电

BasePageTitle.getPageTitle();