我想做以下事情。这两个类有相同的方法。有没有办法在不知道Type?的情况下设置变量?
public class Example {
private variable;
public Example(SampleClassOne var) {
variable = var;
}
public Example(SampleClassTwo var) {
variable = var;
}
}
答案 0 :(得分:2)
SampleClassOne& amp; SampleClassTwo? 它们是相互依赖的吗?他们共享一个界面吗? 如果是这样,你可以使用它作为类型。
答案 1 :(得分:0)
存在泛型来解决这个用例:
public class Example<T> {
T variable;
public Example(T var) {
variable = var;
}
}
...但是为了使用它,你仍然需要知道它在投射时的实际情况。类型擦除会将其视为Object
。
答案 2 :(得分:0)
您可以使用类似的内容,将变量转换为Object
public class Example
{
private Object variable;
public Example( Object var )
{
variable = var;
}
}
答案 3 :(得分:0)
一些注释:
如果SampleClassOne
和SampleClassTwo
有共同的祖先,
使private variable
的类型成为共同的祖先。
所有类的共同祖先都是Object
,
但如果两个类都实现相同的接口,则可以使用Interface
。
您尚未解决检索private variable
值的问题。
我认为这不是你计划实施的
(即没有getVaiable()
)方法。
以下是一个例子:
public interface MyInterface
{
... stuff.
}
public class SampleClassOne
implements
MyInterface
{
... stuff.
}
public class SampleClassTwo
implements
MyInterface
{
... stuff.
}
public class Example
{
private MyInterface variable;
// only one constructor required.
public Example(final MyInterface variableValue)
{
variable = variableValue;
}
}