【问题标题】:JAVA static classesJAVA静态类
【发布时间】:2017-09-26 06:32:19
【问题描述】:

我有一个扩展JDBCRealm 类并实现Realm 接口的类:

public class TomcatRealm extends JDBCRealm implements Realm {}

我的问题是如何使外部类静态化,即我能够在不实例化 TomcatRealm 类的情况下调用 JDBCRealm 类的方法。

编辑 1:

我看到很多人没有理解这个问题的意图。我实际上想从TomcatRealm 的静态方法内部调用JDBCRealm 类的方法。例如:

private static String getCredCol() {
    // TODO Auto-generated method stub
    return getUserCredCol();
}
//This static method cannot hide the instance method from `JDBCRealm`

编辑 2:

在另一个问题中,有人建议我实例化JDBCRealm,然后在TomcatRealm 静态方法中调用它的方法。我已经尝试过这个并面临一个问题:JDBCRealm getConnectionURL() returns null

作为解决该问题的方法,我想尝试一下。

【问题讨论】:

  • 你想对“单身人士”做一些研究
  • 你想做什么?
  • @JoeC 无需实例化 TomcatRealm 类即可调用 JDBCRealm 类的方法
  • 为什么不简单地实例化 JDBCRealm 并使用它?
  • @HBK 你不必这样做。只需标记方法static。但不清楚你到底想要什么。这可能是XY problem

标签: java static static-methods


【解决方案1】:

你不能将外部类设为静态,但你可以这样做,看看..

interface Realm {

}

class JDBCRealm {
	protected static void m1() {
		System.out.println(" protected Static method m1 of class JDBCRealm ..");
	}

	public static void m2() {
		System.out.println(" public Static method m2 of class JDBCRealm ..");
	}

}

public class TomcatRealm extends JDBCRealm implements Realm {
	public static void main(String... args) {
		JDBCRealm .m1();// protected Static method m1 of class JDBCRealm ..
		JDBCRealm .m2();// public Static method m2 of class JDBCRealm ..

	}

}

【讨论】:

  • JDBCRealm 类是一个定义明确的类,它具有我需要重用的具体方法。我想使用JDBCRealm的现有方法
  • TomcatRealm t1=新的TomcatRealm(); t1.m1(); // 你可以这样做 。否则,请借助静态嵌套内部类。它可能会有所帮助
猜你喜欢
  • 2010-12-23
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
  • 2011-11-21
  • 2016-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多