让我说我有一个方法
public abstract void doMath(Holder h);
但我希望用户能够调整传入的类。就像这样
public abstract void doMath(ClassOfPersonalChoice h);
我将如何做到这一点。
感谢您的时间和精力。
PS:传递的类包含一堆变量。 即
class ClassofPersonalChoice{
double hue = 0;
int R = 240;
int G = 10;
int B = 180;
}
答案 0 :(得分:2)
如果声明参数为Object
类型,则可以传递任何内容。但你无法用它做任何事情,因为你不知道它是什么类型。这就是静态类型语言的工作方式。
理想情况下,您应该声明参数类型为SomeInterface
,并且您传递的所有对象都应该是实现该接口的类的实例。这样你就会知道你可以对对象做什么操作,但你不需要知道它们的确切类。
答案 1 :(得分:1)
如果你说
public abstract void doMath(Object h);
然后用户可以实现他想要的任何东西。
高级创意:使用泛型/类型参数:
public abstract class MathClass<T> {
public abstract void doMath(T holder);
}
public class IntegerMathClass extends MathClass<ClassOfPersonalChoice> {
@Override
public void doMath(ClassOfPersonalChoice holder) {
// do something with the value
}
}