java - 在从子类构造函数调用之前更改超类中定义的静态变量
问题描述
我有classA
静态PooledConnectionFactory
变量。classB
扩展 A。
public class A{
private static PooledConnectionFactory con;
public A(){
this("gets URL from defaults properties file");
}
public A(final String url){
if(con==null){
//Initialize pooled connection
}
//code for connection here
}
}
public class B extends A {
private PooledConnectionFactory conn;
public B(String url){
super(url);
}
public B(){
super();
}
}
我想PooledConnectionFactory
作为一个非静态变量,以便为每个服务拾取,它被单独初始化。因为它是扩展 A,所以调用转到 A 的构造函数。
为了实现这一目标,我应该在 B 类中做出哪些改变?
解决方案
使用单例而不是A
构造函数
public class A {
private static PooledConnectionFactory con;
public A() {
this("gets URL from defaults properties file");
}
public A(final String url) { }
public static PooledConnectionFactory getPooledConnectionFactory() {
if (con == null) {
//Initialize pooled connection
}
return con;
}
}
推荐阅读
- c# - 有人在 C# 中遇到过这个 Resharper 2019 空间问题吗?
- asp.net-mvc - 使用淘汰赛js绑定剑道网格
- hazelcast - 在 Hazelcast 裂脑后 ReliableItopic 消息监听器不工作
- c++ - C++ - Eclipse 消息 ld:无法与架构 x86_64 的主可执行文件“./src/Chapter01.o”链接
- android-studio - 错误:清单合并失败:属性 application@appComponentFactory
- java - 为什么 Eclipse 忽略了 .project 文件?
- java - 在我的测试中重复相同的测试用例
- ios - 将应用程序移至后台,调用 viewDidLayoutSubView 并使用 UICollectionView 创建大量警告
- cron - 每小时的第一分钟运行 cron 作业
- android - 相对布局中图像按钮的奇怪行为