小编han*_*szt的帖子

与使用显式类型“String”相比,为什么使用“newInstance()”方法创建字符串的行为在使用“var”时有所不同?

我正在学习 Java 中的反射。偶然间,我发现了以下对我来说意想不到的行为。

下面写的两个测试都成功。

class NewInstanceUsingReflection {
    @Test
    void testClassNewInstance()
        throws NoSuchMethodException, InvocationTargetException,
        InstantiationException, IllegalAccessException
    {
        final var input = "A string";
        final var theClass = input.getClass();
        final var constructor = theClass.getConstructor();
        final String newString = constructor.newInstance();

        assertEquals("", newString);
    }

    @Test
    void testClassNewInstanceWithVarOnly()
        throws NoSuchMethodException, InvocationTargetException,
        InstantiationException, IllegalAccessException
    {
        final var input = "A string";
        final var theClass = input.getClass();
        final var constructor = theClass.getConstructor();
        final var newString = constructor.newInstance();

        assertEquals("A string", newString);
    }
}
Run Code Online (Sandbox Code Playgroud)

除了断言之外的唯一区别是变量类型在第一个测试中是显式的,并在第二个测试中newString声明。var

我正在使用 …

java reflection string-pool

71
推荐指数
1
解决办法
2252
查看次数

标签 统计

java ×1

reflection ×1

string-pool ×1