java 小功能记录

3、 required = false 代表没有的情况下也会注入一个空的list

    @Autowired(required = false)
    public void setConfigurers(List<WebMvcConfig> configurers){
        
    }

4、@JsonProperty  标记后使用json序列化会自动使用它设置的名字

@Data
public class ProductVO {

    @JsonProperty("name")
    private String categoryName;

    @JsonProperty("type")
    private Integer categoryType;

    @JsonProperty("foods")
    List<ProductInfoVO> productInfoVOList;
}

5、作为数据传递类,标记不为空的字段

@NotEmpty 用在集合类上面 

@NotBlank 用在String上面 

@NotNull 用在基本类型上

6、BeanUtils.copyProperties(orderDTO, orderMaster);  把orderDTO里相同的字段数据拷贝到orderMaster里

        OrderMaster orderMaster = new OrderMaster();
        orderDTO.setOrderId(KeyUtil.genUniqueKey());
        BeanUtils.copyProperties(orderDTO, orderMaster);
        orderMaster.setOrderAmount(new BigDecimal(5));
        orderMaster.setOrderStatus(OrderStatusEnum.NEW.getCode());
        orderMaster.setPayStatus(PayStatusEnum.WAIT.getCode());

7、alt + Arl + B 定位到接口实现类上 idea

8、拼接字符串 String url = String.format("http://%s:%s", serviceInstance.getHost(), serviceInstance.getPort()) + "/msg";

 

Runnable runnable = () -> {
    System.out.println(decription);
};

9、arr转list

    List<String> stringA = Arrays.asList("hello", "world","A");
    String[] stringArray = {"hello","world","B"};
    List<String> stringB = Arrays.asList(stringArray);

 

    int[] intarray = {1, 2, 3, 4, 5};
    //List<Integer> list = Arrays.asList(intarray); 编译通不过
    List<int[]> list = Arrays.asList(intarray);
    int[] intArray = {1, 2, 3, 4};
    List<Integer> list = Ints.asList(intArray);

10、时间格式话YYYY和yyyy

    /**
     * YYYY 是 week-based-year
     * 当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年。
     * @param args
     * @throws ParseException
     */
    public static void main(String[] args) throws ParseException {
        SimpleDateFormat yyyy = new SimpleDateFormat("yyyy-MM-dd");
        Date date1 = yyyy.parse("2020-01-01");
        System.out.println(date1);
        SimpleDateFormat YYYY = new SimpleDateFormat("YYYY-MM-DD");
        Date date2 = YYYY.parse("2020-01-01");
        System.out.println(date2);
    }

Class类的asSubClass()方法

其作用是将一个Class对象转换成为指定了泛型的Class对象,经常用于你不知道Class对象是什么类型的时候,例如Class.forName(str)他只能返回一个Class<?>,这时你需要将其转换为一个Class<? extends XXX>的对象(可能是添加到制定了泛型的集合里面)。

    public static void main(String[] args) throws ClassNotFoundException {
        String clazzName = args[2];
        java2PbMessage(Class.forName(clazzName).asSubclass(Annotation.class));
    }

    public static void java2PbMessage(Class<? extends Annotation> protoClazz) {

    }

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现这个功能可以使用Java的计时器类Timer和Date类。首先,在程序开始运行时记录当前时间,然后启动一个计时器。当用户暂停时,停止计时器并记录暂停时的时间。当用户恢复操作时,重新启动计时器,并记录恢复时的时间。最后,计算暂停的时间差,并将其显示在界面上。 以下是实现该功能Java代码示例: ```java import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Date; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.Timer; public class PauseTimer extends JFrame { private JLabel timeLabel; private JButton pauseButton, resumeButton; private Date startTime, pauseTime, resumeTime; private long pauseDuration; private Timer timer; public PauseTimer() { setTitle("Pause Timer"); setSize(300, 200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); timeLabel = new JLabel("00:00:00"); pauseButton = new JButton("Pause"); pauseButton.addActionListener(new PauseButtonListener()); resumeButton = new JButton("Resume"); resumeButton.addActionListener(new ResumeButtonListener()); resumeButton.setEnabled(false); JPanel panel = new JPanel(); panel.add(timeLabel); panel.add(pauseButton); panel.add(resumeButton); add(panel); startTime = new Date(); timer = new Timer(1000, new TimerListener()); timer.start(); } private void pauseTimer() { pauseTime = new Date(); timer.stop(); pauseButton.setEnabled(false); resumeButton.setEnabled(true); } private void resumeTimer() { resumeTime = new Date(); pauseDuration += resumeTime.getTime() - pauseTime.getTime(); timer.start(); pauseButton.setEnabled(true); resumeButton.setEnabled(false); } private void updateTimeLabel() { long elapsed = new Date().getTime() - startTime.getTime() - pauseDuration; int hours = (int) (elapsed / (60 * 60 * 1000)); int minutes = (int) ((elapsed / (60 * 1000)) % 60); int seconds = (int) ((elapsed / 1000) % 60); timeLabel.setText(String.format("%02d:%02d:%02d", hours, minutes, seconds)); } private class PauseButtonListener implements ActionListener { public void actionPerformed(ActionEvent e) { pauseTimer(); } } private class ResumeButtonListener implements ActionListener { public void actionPerformed(ActionEvent e) { resumeTimer(); } } private class TimerListener implements ActionListener { public void actionPerformed(ActionEvent e) { updateTimeLabel(); } } public static void main(String[] args) { PauseTimer timer = new PauseTimer(); timer.setVisible(true); } } ``` 在上面的代码中,我们创建了一个PauseTimer类,它继承自JFrame类,用于实现应用程序窗口。在构造函数中,我们初始化了界面组件,记录了程序开始运行时的时间,并启动了一个计时器。计时器每秒钟触发一次ActionEvent事件,然后调用updateTimeLabel()方法来更新时间标签的显示。 当用户点击暂停按钮时,我们记录了当前时间,停止计时器,并禁用了暂停按钮,启用了恢复按钮。当用户点击恢复按钮时,我们记录了恢复时的时间,计算暂停的时间差,重新启动计时器,并更新按钮的状态。 最后,我们实现了一个updateTimeLabel()方法来计算已经过去的时间,并将其显示在时间标签中。该方法使用Date类来计算时间差,并将其转换为小时、分钟和秒数来显示在标签中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值