【发布时间】:2013-05-19 18:24:42
【问题描述】:
到底有没有,当通过一个对象(实例)调用一个方法的时候,让那个方法知道是哪个实例(对象)调用了它?
这是我的意思的示例(伪代码):
伪代码示例
public class CustomClass{
public void myMethod(){
if (calling method is object1){
//Do something here
}
else {
//Do something else
}
}//End of method
}//End of class
然后在另一个班级:
public SomeOtherClass{
CustomClass = object1;
public void someOtherMethod(){
object1 = new CustomClass();
object1.myMethod(); //This will call the 1st condition as the calling object is object1, if it were some other object name, it would call the 2nd condition.
}//End of method
}//End of class
可能的解决方法
我发现这样做的唯一方法是让该方法接受另一个参数,比如一个“int”,然后检查该 int 的值并执行与它相关的“if else”语句的任何部分(如果肯定使用“int”值,则为“switch”语句)但这似乎是一种非常混乱的方式。
【问题讨论】:
-
你为什么要这个?你想达到什么目的?
-
变量“名称”真的没有意义。请注意,多个具有不同名称的变量都可以引用同一个对象。重要的是对象references。我也同意@Heuster 的观点,您提出此请求的动机可能会影响最终可能是最佳答案。
-
@Heuster,它用于碰撞检测例程,我有 1 个平台,由 3 个瓦片组成,一个左瓦、一个中间瓦和一个右瓦,碰撞响应将根据角色的瓦片而有所不同命中,因此我需要碰撞检测例程来知道它正在处理哪种类型的平台图块。我正在创建 3 个不同的对象(CDLeft、CDMiddle 和 CDRight,并从我的逻辑例程中调用它们,但它不知道如何区分。)
-
那么也许它应该是 Game 对象,即持有瓷砖并运行游戏的对象,它识别哪些瓷砖发生了碰撞,然后在两个瓷砖上调用碰撞方法,传递给这些方法什么类型的瓷砖与之碰撞。
标签: java class object instance