小编Lat*_*thy的帖子

为什么Serializable接口不包含任何方法?

我知道什么是序列化以及为什么使用它,但我的问题是:

  1. 为什么序列化是标记接口?
  2. 在Serializable接口中没有的潜在好处是什么writeObject,readObject因为当我们进行序列化时,我们最终会覆盖这两种方法?
  3. 如何readResolve确保在反序列化期间创建的对象不是新对象.我知道下面的内容,它在反序列化过程中返回相同的对象,但是谁会在readResolve内部调用此方法?

    private Object readResolve() throws java.io.ObjectStreamException { 
        return INSTANCE;
    }
    
    Run Code Online (Sandbox Code Playgroud)

java serialization

9
推荐指数
1
解决办法
979
查看次数

为什么FileNotFoundException是CheckedException?

我知道FileNotFound是Checked Exception但是尽管如此,只有在运行时才会发生这种异常.它更像是算术异常(未经检查).

无论是选中还是未选中,异常都只会在运行时发生.

我的问题是为什么我们将FileNotFound/IO/DB相关的东西称为Checked Exception?

请分享你宝贵的想法:)

java exception checked

8
推荐指数
1
解决办法
1万
查看次数

多键哈希图

最近,我接受了一次采访,以在DS中保存大量的员工详细信息。

我以emp Id为键将解决方案作为Hashmap给出。

后续问题是用户是否要基于名称搜索如何实现它。我建议使用emp名称作为键,并使用Arraylist保存所有具有相同名称的员工。

下一个后续问题很棘手,需要创建一个ONE映射,以便用户可以根据emp ID或emp名称进行搜索。如何在地图中实现?

以内存有效的方式实现它。

java

5
推荐指数
1
解决办法
590
查看次数

System.exit,最后是代码分析

请帮我理解下面的代码,

情况1:

finally{
    return;
    System.exit(1);
}
Run Code Online (Sandbox Code Playgroud)

上面的代码抛出编译时错误:

无法访问的代码

案例2:

finally{
    System.exit(1);
    return;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码不会抛出任何编译/运行时错误,但是当我运行程序时只退出.

我的问题在于为什么设计人员想在案例1中抛出编译时错误,而在案例2中他们没有.实际上,当您调用System.exit(0)时,程序将终止,这意味着它下面的代码无法访问.

java

2
推荐指数
1
解决办法
119
查看次数

无法处理杰克逊中复合密钥的托管/后备引用“ defaultreference”

最近我遇到了这个错误,

无法处理复合密钥的杰克逊中的托管/后备引用“ defaultreference”

我在Google上搜索了很多,但发现可以使用以下选项,

JsonManagedReference和JsonBackReference

参考

但是我的情况是

Class Parent{
private int id;
@JsonManagedReference
Set<Child> childSet;
}

Class Child{
 private ChildId childId;
 private String name;
 }

 Class ChildId{
 private int childKey;
 @JsonBackReference 
 private Parent parent;
 }
Run Code Online (Sandbox Code Playgroud)

如您所见,在子类中,它具有复合键。我不能更改它,因为它与数据库有关系。

有人可以帮我解决这个问题吗?

注意:我使用杰克逊2.4.3我使用Javers 1.2.9进行对象比较

更新1:

根据建议,我删除了JsonManaged和JsonBack参考注释,并将JsonIgnore添加到childId类的Parent属性中。但是我发现Javers出错了,

JaVers运行时错误-不支持Set of ValueObjects的差异

java jackson javers

1
推荐指数
1
解决办法
6427
查看次数

Cron Expression在本月的最后一天无效

我想安排一个任务在每个月的最后一天上午10:10运行.cron表达式是0 10 10 L * ?

现在的问题是CronSequenceGenerator抛出NumberFormatException"L"值.这意味着Spring CronSequenceGenerator不支持这种表达方式.但是,如果我只通过传递数字,它工作正常.

这是完整的堆栈跟踪:

Exception in thread "main" java.lang.NumberFormatException: For input string: "L"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.valueOf(Integer.java:582)
at org.springframework.scheduling.support.CronSequenceGenerator.getRange(CronSequenceGenerator.java:324)
at org.springframework.scheduling.support.CronSequenceGenerator.setNumberHits(CronSequenceGenerator.java:297)
at org.springframework.scheduling.support.CronSequenceGenerator.setDays(CronSequenceGenerator.java:275)
at org.springframework.scheduling.support.CronSequenceGenerator.setDaysOfMonth(CronSequenceGenerator.java:266)
at org.springframework.scheduling.support.CronSequenceGenerator.parse(CronSequenceGenerator.java:239)
at org.springframework.scheduling.support.CronSequenceGenerator.<init>(CronSequenceGenerator.java:81)
at org.springframework.scheduling.support.CronTrigger.<init>(CronTrigger.java:54)
at org.springframework.scheduling.support.CronTrigger.<init>(CronTrigger.java:44)
at com.hcdc.coedp.datantar.scheduler.SchedulerUtil.start(SchedulerUtil.java:75)
at com.hcdc.coedp.datantar.scheduler.SchedulerUtil.changeTrigger(SchedulerUtil.java:106)
at com.hcdc.coedp.datantar.scheduler.SchedulingService.scheduleTransfer(SchedulingService.java:70)
at com.hcdc.coedp.datantar.scheduler.Scheduler.schedule(Scheduler.java:107)     
at main.Main.main(Main.java:47)
Run Code Online (Sandbox Code Playgroud)

java spring

0
推荐指数
1
解决办法
4912
查看次数

tomcat不是应用服务器是什么原因

我知道Tomcat是一个Web服务器,但为什么它不是一个应用程序服务器?

任何服务器都需要遵循一些规范。那个规格是什么?

apache可以做tomcat应用服务器吗?

我还在博客中读到,tomcat 没有一些库来充当应用程序服务器。那些库是什么?

谢谢

java tomcat

-3
推荐指数
1
解决办法
293
查看次数

标签 统计

java ×7

checked ×1

exception ×1

jackson ×1

javers ×1

serialization ×1

spring ×1

tomcat ×1