将某些方法限制为某些对象

时间:2018-01-29 19:35:40

标签: java

我想限制某些方法对某些对象的使用。我解释 :) 我有一些一般性的对象,让我们说Ticket,具有以下结构:

import com.google.gson.annotations.SerializedName;
import lombok.Value;

@Value
public class Ticket {

    @SerializedName("@type")
    private String type;
    private String ticketToken;
    private String url;
    private String ticketUrl;
    private UnderName underName;

    @SerializedName("ticketedSeat")
    private Seat seat;

    private String ticketNumber;
    private String description;
}

假设其他对象可以访问它,但具有不同的用法。例如:Ship对象的Ticket属性使用typeticketNumberunderName。 但Train对象的Ticket属性使用typeticketTokendescription

我想知道是否有一个功能(可能是注释),这样开发人员就能知道哪些字段与对象有关,或者知道如何创建类似的东西。

我希望自己明确表达:)提前谢谢。

2 个答案:

答案 0 :(得分:0)

为什么不做呢

public class TrainTicket extends Ticket {
    //train properties
}

public class ShipTicket extends Ticket {
    //ship properties
}

奖金,然后您可以将票证作为抽象类

答案 1 :(得分:0)

  • 如果要有不同的类,可能有一个共同的父/接口,每个子类都可以定义自己的方法。如果区分不同类型的差异非常重要,那么这种选择是很好的。在实践中,开发人员必须在任何地方执行“instanceof”检查并进行转换以访问数据。
  • 选择就是像你一样做,甚至不执行任何事情。如果2个孩子的关键资产培训& Ship共享Ticket但不共享FreeTransport类型。您不会将票证放在父票证中并将其定义复制到2个子节点中。如果对许多孩子重复这种做法,那就浪费时间了。但是,您可能希望枚举或类型识别运输类型,以了解您期望可用的内容。如果系统并不真正关心Train vs Ship的概念,你也会这样做,但实际上只有在实际存在的函数的情况下才会表现,无论其类型如何。