java - 使用java继承获取子类中的属性?

标签 java

我有以下类(class)。

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,因为它可以被许多子类使用。此外,客户端不应访问 BaseRequest.javaSomeEntity 属性 现在客户端可以使用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 方法。但如果我提供一个 getter,那么即使客户端也可以通过实例化 Request 类来获取 SoemEntity 实例。我不想让客户端访问它。现在的问题是有没有最好的方法在 saveData() 中获取 someEntity 实例?

最佳答案

看来您需要为 BaseRequest 中的 someEntity 提供 protected getter

protected SomeEntity  getSomeEntity() {
    return someEntity; 
}

使用此 getter,您不需要 BaseRequest 中 protected entity 字段,因此您可以将其设为私有(private)。

关于java - 使用java继承获取子类中的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21546699/

相关文章:

java - 如何使用Java提取文本文件中两个单词之间的内容?

java - 使用servlet和html在服务器上上传文件时找不到符号getServletContext()错误

java - 字符串操作,从同一行提取某些值

java - spock 中的用户故事定义

java - 一对一和连接表

java - list.clear() 与 list = new ArrayList<Integer>();

Java 泛型上限通配符限制

java - Freemarker 中的错误处理

java - 使用 Apache HttpClient 仅跳过主机名验证

java - 为什么这个递归构造函数不会导致编译时错误?