Java 是否可以获取调用方法的类的名称?

Java 是否可以获取调用方法的类的名称?,java,physics,Java,Physics,对不起,如果标题听起来很混乱,我会尽力解释 我拥有的是一个类(Force),它需要构造函数中的字符串 public Force(double mag, double ang, String f){ magnitude = mag; angle = ang; from = f; } 但是后来我有一个函数(在同一个类中)返回一个新的力 public Force inverse(){ return new Force(magnitude

对不起,如果标题听起来很混乱,我会尽力解释

我拥有的是一个类(Force),它需要构造函数中的字符串

public Force(double mag, double ang, String f){
        magnitude = mag;
        angle = ang;
        from = f;
    }
但是后来我有一个函数(在同一个类中)返回一个新的力

public Force inverse(){
    return new Force(magnitude, toRads(angle+180), //String goes here );
}

问题是,我想将调用该方法的任何类/对象的名称放入新构造函数的参数中。有什么方法可以做到这一点吗?

我无法判断您是真的应该这样做,还是设法更改程序以传入字符串。但一般来说,您可以通过查看堆栈来获得。这个答案几乎可以让你达到目的:


不确定创建堆栈跟踪需要多少时间,如果您的方法经常被调用,您应该检查一下。

为什么您觉得有必要这样做?除非您自己传入类的名称或使用AOP,否则不太可能。如果你能解释一下你想用它做什么,这可能有助于确定你需要做什么。嗯,我在学校学AP物理,我在做2D物理引擎,因为为什么不呢?我面临的主要困难之一是如何确定物体是否在斜面上。因为如果物体在倾斜平面上,它需要一组不同的方程,而当它不在倾斜平面上时。我能看到这样做的唯一方法是给每个对象一个“类型”,然后检查该点上的对象是否在倾斜平面上,这样我就知道要使用哪个方程。。。因此,这一点是,如果一个力是在一个物体上产生的,这个方法将被调用来给出这个力的倒数,这将需要一个不同的“From”,因为这个力可能来自一个倾斜的物体,也可能不是。抱歉,如果这听起来让人困惑的话,在我的脑子里是有道理的。”…它需要一组不同的方程,当它不是…来自倾斜物体的力或不是…”这些听起来像是通常的OOP场景,由非常传统的技术处理,如多态性、结构组合,等等。如果你不想用逻辑来处理,例如,
if(isfromSlendePlane)[calcForInclinePlane]else[calcOtherwise]
。是的,问题是告诉你它是否在一个斜面上,这就是为什么我必须这样做。。。我需要给这个物体一个“类型”,说这个物体是一条30度的直线,然后我必须使用不同的方程组,所以当一个球撞击直线时,一个力从球的直线上施加,但也有一个力从直线上施加到球上,这两个方程都不同,所以我需要找到一种方法来确定力的来源。与任何其他类型的逻辑相比,使用堆栈跟踪是非常昂贵的。