Смешивание строк и int в Java

1

Я использую для отладки путем печати сообщения журнала. Переменные, которые я отслеживаю, состоят из String и int. Например, я печатал что-то вроде:

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

где value1 и т.д. являются int, String3 и т.д. являются переменными String.

Теперь мой вопрос: могу ли я написать метод, который принимает произвольный набор переменных (int, String или другие примитивные типы) в качестве параметров и выводит Log? Для String я могу использовать method(String... arg), но я не знаю, как это сделать с int. Я попытался (Object...) и поместил .toString() всюду, но int не имеет тип Object....

Изменение: Моя конечная цель: мне нужен метод, который принимает только переменную, которую я хочу отлаживать как параметры. (Они могут быть любыми типами, а не только String или int... только любой тип, который вы можете преобразовать в строку). Поэтому этот метод должен сделать преобразование primitive-> Object для меня.

Теги:

4 ответа

2
Лучший ответ

это не проблема, вы можете использовать int для Integer, являющегося объектом

java делает это по умолчанию, вы можете отправить int методу, который получает Object называемый AutoBoxing

автоматические конверсии:

Изображение 174551

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

и теперь вы можете отправить ему целое число, оно автоматически преобразует его в Integer:

int i = 8;
String combined = toS(i, "hello");
  • 0
    Проблема в том, что они могут быть любого примитивного типа, могут быть логическими или char. Я не хочу выполнять преобразование каждый раз, когда я печатаю журнал, я хочу метод, который делает это автоматически для меня, чтобы мой метод принимал только те параметры, которые мне нужны для отладки
  • 0
    @Ivan Любой тип примитива будет автоматически упакован в соответствующий тип оболочки.
Показать ещё 2 комментария
1

Используя стандартный Java-журнал, вы можете:

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

Если вы просто хотите разрешить String, вы можете использовать java.text.Messageformat:

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

Если вы не хотите использовать синтаксис varargs и иметь простой массив объектов, вы все равно можете использовать MessageFormat и писать:

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

Используйте тип объекта в varargs. Для

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 проверка тоже подойдет :)
0

Используйте классы Wrapper для примитивов, затем вы можете вызвать toString() на них.

например:

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

будет печатать

 5

Ещё вопросы

Сообщество Overcoder
Наверх
Меню