2014-09-24 121 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