将任何类型作为方法参数传递

时间:2015-07-01 20:31:02

标签: java

我正在尝试一个可以将ANY TYPE作为参数(Object,int,boolean,ArrayList等)的方法。这是一个非常简单的方法来说明它将尝试做什么:

public void printAnything(Type arg0) {
    System.out.println(arg0);
}

我要问的是,该方法中会替换Type的是什么?

4 个答案:

答案 0 :(得分:5)

在您的具体示例中,Object很适合,因为PrintStream#println(Object obj)会打印字符串表示形式(使用String#valueOf(Object))。

当您传递原始值时,它会自动装入其包装类型,例如int将转换为java.lang.Integer,其扩展为Object

答案 1 :(得分:1)

您需要接受的数据类型为location @app { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; # New header for SSL proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://unicorn_something_server; }

因为在Java中,除了Objectintfloat等原始数据类型外,所有内容都是从它派生的。 然而,如果需要boolean,也可以传递这些,因为Java会自动在基元(例如Object)和它们的对象表示(例如int)之间进行转换,具体取决于哪种形式适合方法原型。此功能称为自动装箱。

答案 2 :(得分:1)

您可以同时使用

public void printAnything(Object arg0) {
    System.out.println(arg0);
}

public void <T> printAnything(T arg0) {
    System.out.println(arg0);
}

由于自动装箱,还可以使用基元调用两个版本。

另见Java generics T vs Object

答案 3 :(得分:0)

您可以将Object用作类型。它可以autobox int到Integer等等。 请参阅here

对象类是所有其他类的超类。所以,你可以使用它。另请参阅this