[英]How to pass a datatype like String, Date
說我有一個方法聲明,如:
private void someMethod(final String someKey, final Object dataType){
// Some code
}
我想這樣稱呼它:
someMethod("SomeKey", String);
someMethod("SomeKey", Date);
我可以用不同的方式做到這一點,例如用一個表示類型,枚舉等的不同值聲明一個int。
但是我可以只傳遞類型本身嗎?
編輯:
詳細地說,我可以這樣:
someMethod("SomeKey", 1); // 1 = String
someMethod("SomeKey", 2); // 2 = Date
這看起來不太好。
如果您希望將對象的類型作為參數傳遞,則可以通過傳遞java.lang.Class
即
public void someMethod( String someKey, Class clazz ) {
... whatever
}
那是您要找的東西嗎?
編輯:納入馬克的評論。
你可以這樣稱呼
someMethod( "keyA", Date.class );
someMethod( "keyB", String.class );
等等
您可以使用instanceof運算符:示例:
private void someMethod(String someKey, Object dataType) {
if (dataType instanceof String) {
System.out.println("Called with a String");
}
else if (dataType instanceof Date) {
System.out.println("Called with a Date");
}
}
但這是不好的樣式,因為您沒有類型save的類型,最好是重載該方法:
private void someMethod(String someKey, String dataType) {
System.ount.println("Called with a String");
}
private void someMethod(String someKey, Date dataType) {
System.ount.println("Called with a Date");
}
您可以通過在類名稱上“調用” .class來獲得類型,它將返回代表該類型的Class的實例
private void someMethod(final String someKey, final Class<?> dataType){
// Some code
}
someMethod("SomeKey", String.class);
someMethod("SomeKey", Date.class);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.