我试图让用户选择在哪个类上执行function()。 假设有两个对象A和B的类 函数使用obj.get和obj.set等函数。 我想在A和B之间进行选择并将其复制到obj。
有没有办法做到这一点。 问题 : A = Obj ....不工作 如果我使用Switch case或任何循环,并将Obj声明为所选类的对象,则为范围问题。
请帮忙!! 这两个类都有完全相同的变量和方法。
答案 0 :(得分:0)
如果对象A和B属于同一类,则只需这样做:
(事实上,如果A和B具有完全相同的字段和方法,应该属于同一个类,如果它是真正的程序)
MyClass A,B;
//...
A = copy(B);
/*
*
*
*
*
*/
MyClass copy(MyClass arg) {
MyClass result = new MyClass();
result.field1 = arg.field1;
result.field2 = arg.field2;
//........
return result
}
或覆盖clone
中的MyClass
方法。
注意:大多数人都同意Java的克隆被破坏。您可以在 Effective Java 2nd Edition 中阅读有关该主题的更多讨论,第11项:明智地覆盖克隆。他建议改为使用复制构造函数或复制工厂。
答案 1 :(得分:0)
我看到你标记了java和C ++,你正在使用哪一个?
你的陈述很难理解,但如果我是对的,你有类似的东西:
ClassA A = new ClassA()
ClassB B = new ClassB()
你想要从obj A到obj B复制一些东西吗?使用此:
B.set(A.get());
答案 2 :(得分:0)
如果您正在使用C ++,那么您可以通过执行此操作来识别类的名称,
#include <typeinfo>.
..
..
..
.
cout << typeid(objA).name() << endl;
我相信你在根据用户输入确定课程时遇到问题...... 在这种情况下,typeid可以工作。只需检查用户选择的类,并根据输入的任务执行。