You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中构造参数new关键字用法及类名$符号含义解析

关于Spring Security中User$UserBuilder的两个问题解答

1. 类名中的$符号是命名约定还是有功能意义?

在Java里,$符号不是单纯的命名约定,而是编译器对内部类的标准命名规则,具备实际功能意义。User$UserBuilder代表UserBuilder是User类的静态内部类——Java编译器会自动将内部类编译为外部类$内部类.class的文件,用$来明确标识内部类与外部类的归属关系,同时保证类名的全局唯一性。

2. 构造方法参数中的new关键字是什么意思?

你看到的new org.springframework.security.core.userdetails.User(){} x0是创建一个匿名内部类的实例:

  • new User(){}的写法,本质是定义一个继承自User的匿名子类(没有显式类名),同时直接实例化这个子类对象;
  • 这个实例被作为参数传入UserBuilder的构造方法。

需要说明的是,Spring Security的UserBuilder构造方法是包访问权限或私有,实际开发中我们不会直接调用它,而是通过User.withUsername()这类静态工厂方法获取Builder实例。你看到的这个构造方法大概率是反编译后的代码,是编译器为处理内部类访问逻辑自动生成的,无需在业务代码中手动编写。

内容的提问来源于stack exchange,提问作者yes_shashank

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 03:52:11