是否有可能發送任何類型的輸入到一個方法,並找到類型時做類型的操作通過?是否有可能將任何類型的輸入傳遞給方法並確定給定的輸入類型?
like
public methodName(int value){....}
,而不是這個
public methodName(anyType anValue){....}
我用java 8.
是否有可能發送任何類型的輸入到一個方法,並找到類型時做類型的操作通過?是否有可能將任何類型的輸入傳遞給方法並確定給定的輸入類型?
like
public methodName(int value){....}
,而不是這個
public methodName(anyType anValue){....}
我用java 8.
「最佳」 你能做的就是傳遞一個Object
。然後,您可以檢查它,找出它是什麼(除非它是null
,那麼你不知道它應該是什麼,如果這是重要的)。
if (theObject instanceof String){
// do something
} else if (theObject instanceof Number){
// do something
}
但是這有點失敗了強類型語言的目的,而且很少適合。
您也正在丟失任何通用類型信息(因爲它在運行時被擦除並且只能在編譯時使用)。
作爲替代方案,考慮使用不同的參數類型提供方法的多重載。
你可以使用一個通用的方法,像
public static <T> void exampleMethod(T obj) {
System.out.printf("%s %s%n", obj.getClass().getName(), obj);
}
那麼你可以傳遞任何Object
類型exampleMethod
(或原始與自動裝箱)。作爲一個例子,
public static void main(String args[]) {
exampleMethod("Hello");
exampleMethod(123);
exampleMethod(123.123f);
}
其輸出
java.lang.String Hello
java.lang.Integer 123
java.lang.Float 123.123
可以利用的instanceof
public void methodName(Object value){
if(value instanceof Integer){
}else if(value instanceof String){
}
}
你是指重載方法?在這種情況下,您可以根據最終調用的方法隱式知道輸入參數的類型。 –
您可以將參數設置爲Object並查看整數或字符串或任何其他類型。 –
這非常含糊。你想達到什麼目的?答案可能是重載方法,使用泛型,使用反射或其他。 –