2014-09-24 182 views
1

我用於通過打印日誌消息進行調試。我跟蹤的變量由String和int組成。 例如,我用來打印像:在Java中混合字符串和int

Log.e(TAG, value1+":"+value2+":"+String3+":"+String4+":"+value5); 
Log.e(TAG, String6+":"+value7); 

其中value1等都是intString3等都是String變量。

現在我的問題是,我可以寫一個方法,需要任意集合的變量(int,String或其他基元類型)作爲參數,並輸出Log? 對於String我可以使用method(String... arg),但我不知道如何做到這一點與int。 我試圖(Object...),把.toString()無處不在,但intObject型....

編輯的不是: 我的終極目標是:我想,只有需要我想調試作爲參數變量的方法。 (它們可以是任何類型,不只是字符串或int ...只是可以轉換爲字符串的任何類型)。所以這個方法必須爲我做原始 - >對象的轉換。

+0

http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#format(java.lang.String中,%20java.lang.Object ...)? – biziclop 2014-09-24 14:29:40

回答

2

它不是一個問題,你可以投intInteger是一個對象

的Java默認情況下這樣做,你可以發送INT到接收的Object 其稱爲AutoBoxing

的方法自動convertions:

enter image description here

public static String toS(Object o1, Object o2){ 
    return o1 + " " + o2; 
} 

,現在你可以發送到一個整數,將其轉換爲自動整數

int i = 8; 
String combined = toS(i, "hello"); 
+0

問題是,它們可以是任何原始類型,可以是布爾值或char。我不想在每次打印日誌時進行轉換,我想要一種爲我自動執行此操作的方法,這樣我的方法只需要我需要調試的參數 – Ivan 2014-09-24 14:32:23

+0

@Ivan任何基元類型都會自動裝入相應的對象中包裝類型。 – biziclop 2014-09-24 14:36:08

+0

'boolean'將自動轉換爲'Boolean'。 – Dima 2014-09-24 14:36:14

0

使用包裝類基元,那麼你可以對它們調用toString()。

如:

Integer myInteger = new Integer(5); 
System.out.println(myInteger.toString()); 

將打印

5 
1

使用標準Java記錄器,你可以這樣做:

logger.log(Level.INFO, "{0}:{1}:{2}:{3}:{4}", new Object[]{1, 2, "StringA", "StringB", 3 }); 

如果你只是想解決的字符串,可以使用java.text.Messageformat

MessageFormat.format("{0}:{1}:{2}:{3}:{4}", 1, 2, "StringA", "StringB", 3); 

如果你不想使用可變參數的語法,並有一個普通的對象數組,你仍然可以使用MessageFormat寫:

Object[] args = new Object[]{ 1, 2, "StringA", "StringB", 3}; 
MessageFormat.format("{0}:{1}:{2}:{3}:{4}", args); 
1

使用對象類型的可變參數。對於前

public static void main(String[] args) { 
     display(1, "test", 9.5); 
    } 

    static void display(Object... values) { 
     for (Object object : values) { 
      System.out.println(" object value " + object.toString());//Log here 
     } 
    } 

它打印爲

object value 1 
object value test 
object value 9.5 

這需要基本類型和對象都輸出。在原始圖片自動裝箱發生的情況下,它允許你這樣做。

+0

'null'檢查也會很好:) – biziclop 2014-09-24 14:39:31