我有一个泛型组件(一个简单的java
包)。我将其转换为jar
并将其交给我的客户。
我的客户可以将此jar用于他的任何应用程序。是否可以确定谁调用我的组件。在我的组件中,我能够识别谁创建了我的实例吗?
对不起,如果我说这是一个模糊的方式。给定一个对象,我可以使用(getClass()
)找到与它关联的className。但我不确定,如果我的要求是可能的。
答案 0 :(得分:5)
在我的组件中,我是否能够识别谁创建了我的实例?
不一般,没有。您可以尝试在构造函数中获取堆栈跟踪,但这不一定可靠或有用。
如果你想要某种标识符,我建议你把它作为构造函数参数(或工厂方法参数)。换句话说,让呼叫者识别自己。
答案 1 :(得分:3)
您可以获取当前线程的堆栈跟踪并解析返回中的StackTraceElement
,以找出哪些方法正在调用您的。{/ p>
您可以查看this question here in SO。