java 解决父构造器中拿到对象
这两天被问到一个有意思的问题,就是如果在构造器中拿到匿名对象。这个问题有意思在,直觉上是可以通过外部放一个成员变量去接,然后后续就可以使用了,但实际不行。
问题复现下面这个是构造器,当通过 supper 去调用父类构造器。由于问题出现在Spring项目当中,所以我复现的例子也基于Spring重新搭了一个项目来复现这个过程,代码放github上。
复现demo:
12345678910111213package com.test;import org.springframework.beans.factory.annotation.Autowired;public class TransactionCache extends RevokingDB { @Autowired public TransactionCache(String dbName) { // 其他代码不能在 supper 之前,但是又要拿到 TxCacheDB,不能再new一次,否则会初始化两次TxCacheDB。 super(new TxCacheDB(dbName)); // ...