2013-09-24 2 views
0

Очень новичок в 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. Я что-то упустил?

ответ

3
  1. getPageTitle представляет собой метод, и как таковой должен быть активирован с помощью кронштейнов, как это: getPageTitle() не нравится: getPageTitle
  2. так getPageTitle не статический метод - вы должны создать экземпляр BasePageTitle для того, чтобы вызвать его, один из способов достижения этой цели является расширением класса BasePageTitle как MadProgrammer предложил
  3. вы объявили headerMeta и keywords вне класса HeaderComponent - этот код даже не компилируется!
  4. Вы не можете просто позвонить headerMeta = "Page Title" + getPageTitle; внутри класса, для того, чтобы инициализировать параметр вы должны сделать это либо внутри: блок конструктора, сеттер, статический инициализатор или инициализации

Вы, вероятно, хотите сделать что-то вроде этого:

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

} 
0

Для того, чтобы HeaderComponent использовать этот метод, он должен extend от BasePageTitle ...

public class HeaderComponent extends BasePageTitle {... 

Это основы наследования. См Inheritance trail для более подробной информации

0

две вещи:

1-, что метод является методом экземпляра, а не простая утилита или вспомогательный метод. Вам необходимо создать экземпляр экземпляра BasePageTitle.

2- вы неправильно вызываете метод. В вызове метода java требуются скобки, даже если метод не принимает аргументов. Кроме того, он должен быть вызван по методу (если его метод экземпляра) или класса (если статическая), такие как basePageObject.getPageTitle()

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;.

0

Вы можете сделать метод getPageTitle статический

public static Page getPageTitle() 

и затем вызвать

BasePageTitle.getPageTitle(); 
Смежные вопросы