设置变量为未知类型

时间:2017-09-28 17:51:26

标签: java

我想做以下事情。这两个类有相同的方法。有没有办法在不知道Type?的情况下设置变量?

public class Example {
    private variable;

    public Example(SampleClassOne var) {
        variable = var;
    }

    public Example(SampleClassTwo var) {
        variable = var;
    }
}

4 个答案:

答案 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)

一些注释:

  1. Java不是JavaScript。 Java是一种静态类型语言 (根据需要使用谷歌搜索查找静态类型语言的定义。)
  2. 这是一个超级基本问题。 你应该花些时间阅读Oracle Java Tutorial
  3. 如果SampleClassOneSampleClassTwo有共同的祖先, 使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;
        }
    }