Вы можете использовать SYSTEM_USER, если запрос выполняется на SQL Server, который будет извлекать имя пользователя, подключенное к базе данных (для этого убедитесь, что вы не используете фиксированное имя пользователя в строке соединения)
Можно использовать javap
инструмент, чтобы лично убедиться. Скомпилируйте следующий код:
public class AutoboxingTest
{
public static void main(String []args)
{
Integer a = 3;
int b = a;
}
}
, Чтобы скомпилировать и демонтировать:
javac AutoboxingTest.java
javap -c AutoboxingTest
вывод:
Compiled from "AutoboxingTest.java"
public class AutoboxingTest extends java.lang.Object{
public AutoboxingTest();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: iconst_3
1: invokestatic #2; //Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
4: astore_1
5: aload_1
6: invokevirtual #3; //Method java/lang/Integer.intValue:()I
9: istore_2
10: return
}
Таким образом, как Вы видите, автоупаковка вызывает статический метод Integer.valueOf()
, и автораспаковывание вызывает intValue()
на, учитывая Integer
объект. Нет ничего иного, действительно - это - просто синтаксический сахар.
Я придумал модульный тест, который доказывает, что Integer.valueOf () называют вместо конструктора обертки.
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertSame;
import org.junit.Test;
public class Boxing {
@Test
public void boxing() {
assertSame(5, 5);
assertNotSame(1000, 1000);
}
}
Я рекомендовал бы получить что-то как , вруб и декомпилироваться кодирует много. Можно узнать вполне немного о какой на самом деле выполнение Java.
При поиске документа API для [1 116] Integer#valueOf (интервал) Вы будете видеть, что это было добавлено в JDK 1.5. Всем типам обертки (который уже не имел их) добавили похожие методы для поддержки автоупаковки. Для определенных типов существует дополнительное требование, как описано в JLS:
, Если значение упаковываемый p
true
,false
,byte
,char
в диапазоне\u0000
к\u007f
, илиint
илиshort
число между-128
и127
, то позволен r1 и r2 быть результатами каких-либо двух преобразований упаковки [1 123] p. Всегда имеет место что r1 == r2. В§5.1.7
интересно отметить, что long
с не подвергаются тому же требованию, хотя значения Long в эти -128..127
диапазон кэшируются в реализации Sun, точно так же, как другие целочисленные типы.
я также просто обнаружил, что в моей копии Язык программирования Java , это говорит char
, значения от [1 113] до [1 114] кэшируются, но конечно верхний предел на спецификацию \u007f
(и JDK Sun соответствует спецификации в этом случае).