[英]Counter of interface objects in Java
在Java中,如果我想知道MyClass类型的对象有多少,可以用这种方式定义MyClass
public class MyClass {
public static int count = 0;
public MyClass() {
count++;
}
//other stuff
//...
}
然后,只是打电话
MyClass.count
我可以获得创建的对象数量。
我想知道是否有一种方法可以对接口执行相同的操作,例如,如果我有一个名为ICountable的接口,那我该如何知道程序中有多少个ICountable对象。 我正在考虑使用工厂模式进行此操作,但是以任何设计方式我都注意到了缺点,所以我还没有提出可行的解决方案,有人知道这样做的好方法吗?
您可以看一下这个线程:
但我建议,你不实现这样的机制。 发行代码中几乎没有用例。 用于调试/分析的工具有几种。 如果我没记错的话,Eclipse探查器开箱即用地跟踪实例,只需启动它并观察即可。
就像我知道的那样,我在获取现有对象的成员/字段中所引用的答案是我所知的,如果没有解析文件上的类路径来分析任何.class文件或(例如,静态代码分析),就无法保证获得所有此类信息。
即使有一些类实现了所需的接口,这些类也可能不会被您的类加载器直接可见/访问(例如,匿名类)。
仍然在我的分析器中,有一个图书馆提到大多数时候都可以完成这项工作。
单个interface
可以有多种实现。 所有实现都应将其视为该interface
类型。
您可以尝试与此类似的操作。
我的介面
public interface Val {}
实作
public class Impl1 implements Val {
public Impl1(){
Con.count++;
}
}
。
public class Impl2 implements Val {
public Impl2(){
Con.count++;
}
}
您需要在此处使用全局计数器。
例如:
public final class Con {
static int count;
}
现在,您随时可以找到Val
的数量
public static void main(String[] args) {
new Impl1();
System.out.println(Con.count);
new Impl2();
System.out.println(Con.count);
}
您也可以在Impl1
和Impl2
使用单独的变量, Impl1
对每个变量进行计数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.