簡體   English   中英

如何傳遞數據類型,例如字符串,日期

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM