Java 如何通过传递不同的类对象来重用方法?
我有3个模型类,比如类A、类B和类C,它们具有相同的变量和相同的setter和getter方法 这三个模型都有getname()和setName(String s)方法 另一个我有控制器类,我在其中创建了一个方法。如下所述:Java 如何通过传递不同的类对象来重用方法?,java,Java,我有3个模型类,比如类A、类B和类C,它们具有相同的变量和相同的setter和getter方法 这三个模型都有getname()和setName(String s)方法 另一个我有控制器类,我在其中创建了一个方法。如下所述: public void method1(Object obj) { String s = obj.getname(); } 现在我想通过传递模型类参数来调用这个方法,比如method1(aa),method1(bb) 我想通过传递不同的类实例来重用上述方法 下面我要说的
public void method1(Object obj)
{
String s = obj.getname();
}
现在我想通过传递模型类参数来调用这个方法,比如method1(aa),method1(bb)
我想通过传递不同的类实例来重用上述方法
下面我要说的是我想要的整个场景
public class Controller {
public void method1(Object obj)
{
String s = obj.getname();
}
public void callingMethod()
{
if(somecondtion)
{
method1(new A());
}
if(somecondtion)
{
method1(new B());
}
if(somecondtion)
{
method1(new C());
}
}
当我编写上述代码时,java正在给我一个错误,上面写着“方法无法解析”
如何解决上述问题
谢谢创建一个具有相同签名的通用界面。在类A、B、C中实现接口。现在传递接口。举个一般的例子 这里是所有通用签名的接口
interface Root{
commonMethods();
}
下面是类A、B、C以及根目录的实现
class A implements Root{
{
commonMethods(){
// implementations
}
}
class B implements Root{
{
commonMethods(){
// implementations
}
}
class C implements Root{
{
commonMethods(){
// implementations
}
}
现在在您需要使用它们的方法中
public void method1(Root obj)
{
obj.commonMethods(); // call the method
}
所以你需要像这样打电话
method1(new A());
method1(new B());
现在,将为作为参数传递的A或B类调用commonMethod()
最后,这个设计被称为
更新
我个人的建议是实施上述解决方案。但由于你不想使用它,你可以像下面这样简单地使用
public void method1(Object obj)
{
String s = "";
if(obj instanceof A)
s = ((A)obj).getname();
if(obj instanceof B)
s = ((B)obj).getname();
if(obj instanceof C)
s = ((C)obj).getname();
}
这是你要找的水吗
interface IRoot{
string GetName();
}
public void method1(IRoot obj)
{
String s = obj.GetName();
}
或者,您可以使用字符串参数调用方法:
public void method1(String s){}
如何重用到底意味着什么?是的,我想通过传递不同的类实例来恢复这个方法使用接口-在接口中你可以使用你可以使用的抽象方法我想通过传递不同的类实例来在同一个类中使用这个方法我不想这样。我想通过传递不同的类在同一个类中使用这个方法instance@dev09不喜欢有什么特别的原因吗??也许我们可以为您找到另一个解决方案,如果您描述您的场景,但正如您所看到的,我已经将objectobj传递给了该方法。我是否必须将对象obj强制转换为其特定的类实例?该场景类似于有三个具有相同方法和变量的模型类。我有一个控制器类,我在其中创建了一个方法,我想通过在同一个控制器类中传递模型类实例来重用该方法。我已经用场景更新了我的答案。希望这能让你明白我已经用场景更新了我的答案。希望这能让你明白