首页 > 解决方案 > 如何在java中重复代码

问题描述

所以对于我正在做的一个学校项目,我复制相同的代码并粘贴它,只是更改标识符名称。

if (s1.isSelected()){
        System.out.println("Hello");
    String query = "update booking set s1 = 0 where bdate ='"+d+"';";
    stmt.executeUpdate(query);
    }

if (s2.isSelected()){
        System.out.println("Hello");
    String query = "update booking set s2 = 0 where bdate ='"+d+"';";
    stmt.executeUpdate(query);
    }
if (s3.isSelected()){
        System.out.println("Hello");
    String query = "update booking set s3 = 0 where bdate ='"+d+"';";
    stmt.executeUpdate(query);
    }

如何重复此代码 100-120 次?有没有一种简单的方法可以做到这一点?

谢谢。

标签: javaswing

解决方案


阅读

void putClientProperty(Object key, Object value);

Object getClientProperty(Object key);

几乎每个 GUI 系统,二进制 Win32 也有类似的概念来存储特定数据与/在组件中。这彻底消除了愚蠢的可重复代码、奇怪if的 s 系列等。例如

List<JCheckBox> boxes = ... ;

for(...){
    JCheckBox box = ... // create, add listeners and position component by code
    boxes.add(box);
    box.putClientProperty("seat", anSeatObject );
}

需要时,在事件侦听器中或在保存阶段可以读取此信息;

附加说明:我个人更喜欢带有 SeatsByDate 的表格,而不是数百列。在您的模型中查询免费座位几乎是不可能的。因为我更喜欢JPA,所以我会做实体

@Enitity 
SeatsByDate {
  @Id
  int id;

  @ManyToOne
  ReserationDate date;

  bool isReserved;
}

接着

 SeatsByDate  anSeatObject 

所以 JPA 是我个人的偏好,ClientProperty也可能是简单的字符串。


推荐阅读