Java JPA如何确定哪个类正在调用一个方法?

Java JPA如何确定哪个类正在调用一个方法?,java,jpa,playframework,Java,Jpa,Playframework,我正在研究一个类,它将由许多不同的类组成子类。有一些静态方法需要知道调用所源自的子类的名称。现在我知道我可以在静态方法中做类似的事情 foo(Class clazz, String things, String... stuff){} 但是我更愿意让它对用户更容易,而不必打这样的电话 Pass.retract(Pass.class, xxxx, yyyy); 相反,我更喜欢它看起来像 Pass.retract(xxxx, yyyy); 现在,我知道JPA通过它的find()函数实现了这一点

我正在研究一个类,它将由许多不同的类组成子类。有一些静态方法需要知道调用所源自的子类的名称。现在我知道我可以在静态方法中做类似的事情

foo(Class clazz, String things, String... stuff){}
但是我更愿意让它对用户更容易,而不必打这样的电话

Pass.retract(Pass.class, xxxx, yyyy);
相反,我更喜欢它看起来像

Pass.retract(xxxx, yyyy);

现在,我知道JPA通过它的find()函数实现了这一点。我已经多次使用搜索函数,但似乎实体变量被神奇地填充了。它是如何做到这一点的?如果有任何大师有一个想法,我会非常感激。

Play 1.x有很多神奇之处,包括使用查找方法。它是一个运行时字节码增强器,可以通过做一些“魔术”来向用户隐藏API的复杂性


也就是说,Play2选择了放弃这种方法,因为核心开发人员觉得,当人们试图维护核心代码库时,这种魔力太难理解了。

为什么不将“方便的”util方法添加到子类中呢?如果你有一个特定于调用方的逻辑方法,这意味着调用方的某些逻辑在此方法中。实际上,将一个类的特定逻辑放在另一个类的方法中从来都不是一个好主意——还有其他方法可以共享代码。我建议你后退一步,考虑为什么你的设计需要这个结构,并决定如何摆脱它。JPA做这件事的目的完全不同,这些程序逻辑的基本规则并不适用于这个目的。只要设置的字符串发生更改即可。基本上做JPA做的事情,但不同的文件结构。每个子类都有许多自己的功能,但是除了类名之外,还有少量的共享功能将被逐字重复。我试图这样做是对其他程序员的一种礼貌。我仍然在使用Play1.2.x,所以我不完全了解2.x是如何工作的。你能详细说明一下吗?第二幕没有任何魔力。它使用特定的设计模式来遵循。