1

我有这样的getValue方法

public Object getValue() {
     return Integer.valueOf(0);

}

并在 main 方法中调用:

getValue() + 5;

这是简化的。

如何在不强制转换 main 方法的情况下使其工作,而是如何在可能的情况下强制转换返回类型?

4

3 回答 3

7

您可以使用泛型:

public class MyClass<T extends Number>{


  public T getValue(){
    //do something here
  }
}

MyClass<Integer> foo = new MyClass<Integer>();
foo.getValue()+5;
于 2012-04-14T02:15:57.723 回答
2

如果你的方法返回一个对象,你将不得不在某个时候或另一个时候强制转换以使用 Integer、Double 等特定于类的函数。

于 2012-04-14T02:16:36.070 回答
0

我想你不应该那样做,如果你写了这个函数 public Object getValue() 那么为什么不把它改成 public Integer getValue() 并返回 Integer。

如果您还期望其他类型,则重载方法 public String getValue()、public Double getValue() 等。使用工厂模式来决定调用哪个方法。

如果您不想强制转换,那么您不能使用 Object 作为返回类型并且仍然使用 getValue() + 5;

我也喜欢elivine的回复

于 2012-04-14T02:16:09.577 回答