我正在尝试一个可以将ANY TYPE作为参数(Object,int,boolean,ArrayList等)的方法。这是一个非常简单的方法来说明它将尝试做什么:
public void printAnything(Type arg0) {
System.out.println(arg0);
}
我要问的是,该方法中会替换Type
的是什么?
答案 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中,除了Object
,int
,float
等原始数据类型外,所有内容都是从它派生的。
然而,如果需要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);
}
由于自动装箱,还可以使用基元调用两个版本。
答案 3 :(得分:0)