在java中是否可以让方法知道谁调用它(不更改参数)然后返回其他内容?
public class MyClassA {
public static final String someStirng = "this is some String"
public String getSomeString ()
{
return someString;
}
}
public class MyClassB extends MyClassA {
public static final String otherstring = "This is other string"
public SomeBean getContents()
{
SomeBean s = new someBean();
//if this method gets called from MyCallingClassOther then
// i want s.setContents(otherstring)
s.setContents(getSomeString());
return s;
}
}
public class MyCallingClass {
public String callingclassContents ()
{
MyClassB myb = new MyClassB();
return ((SomeBean)myb.getContents()).getFirstName();
}
}
public class MyCallingClassOther {
public String callingOtherContents ()
{
MyClassB myb = new MyclassB();
return ((SomeBean)myb.getContents()).getFirstName();
}
}
Run Code Online (Sandbox Code Playgroud)
所以当从那时getContents()起MyClassB被调用的方法MyCallingClassOther我想要一个不同的东西返回.
只有我可以改变的代码是getContents()(不能改变参数)的主体.或者我可以改变的身体callingOtherContents()在MyCallingClassOther.
这是我试图解决的一个更大的难题的一小部分......显然设计得很差.这是一种hackway.
另外我想看看在其他一些语言中它是如何可行的?
而如果你想知道为什么我不能改变参数......那是因为我不想改变什么callingclassContents()的MyCallingClass
这是我试图解决的一个更大的难题的一小部分......显然设计得很差.这是一种hackway.
你可以做你想做的事; 看@Taylor L'的答案.但请注意,在Java中创建异常并不便宜.
但我的主要观点是,从长远来看,这样做几乎肯定是一个坏主意.这种诡计使你的代码更难理解,并为后来的人留下各种各样的小陷阱.
IMO,你最好更改方法API和调用它的代码,以便调用者(实际上)知道行为差异.简而言之,修复糟糕的设计,不要让它变得更糟.
| 归档时间: |
|
| 查看次数: |
285 次 |
| 最近记录: |