2014-02-04 3 views
0

У меня есть классы ниже.Получение свойства внутри подкласса с использованием java-наследования?

public abstract class BaseRequest{ 

    protected SomeEntity entity; 

    public BaseRequest() { 
     entity= new SomeEntity(); 
    } 
     public void setName(String name){ 
      entity.setName(name); 
     } 
     public void setAge(String age){ 
      entity.setAge(age); 
     } 
} 

public class Request extends BaseRequest{ 

    private String address; 

    public Request() { 
     super(); 
    } 
     public void setAddress(String address){ 
      this.address=address; 
     } 
     public String getAddress(){ 
      return this.address; 
     } 
} 

создать BaseRequest, потому что он может быть использован многими суб классов. Также у клиентов не должно быть доступа к SomeEntity property of BaseRequest.java Теперь клиенты могут использовать Request, как показано ниже.

Request re = new Request(); 
re.setName("xxx"); 
re.setAge("xxxxx"); 
re.setAddress("xxxxxx"); 

и клиенты отправят этот запрос в сервисный метод, как показано ниже.

public void saveData(Request request){ 

    //here i should get SomeEntity instance directly. 

} 

Чтобы получить SomeEntity экземпляра заполняется непосредственно я могу обеспечить метод получения в BaseRequest.java. Но если я предоставляю getter, тогда даже клиенты могут также получить экземпляр SoemEntity, создав экземпляр . Запрос. которые я не хочу позволять клиентам получить к нему доступ. Теперь вопрос в том, есть ли лучший способ получить someEntity instace внутри saveData()?

ответ

1

кажется, что вам нужен защищенный поглотитель для someEntity в BaseRequest

protected SomeEntity getSomeEntity() { 
    return someEntity; 
} 

С этой геттером не нужно защищенный entity поля в BaseRequest, таким образом, вы можете сделать его закрытым.

Смежные вопросы