访问权限导致toString返回空BUG分享
这个BUG
偶然间发现的,因为之前一直都是用Groovy
去写脚本(Groovy
默认访问权限是public
)。在某一个使用Java
写脚本的时候突然发现,我将创建好的对象toString
之后竟然是空的,无论是打印对象属性还是非空验证都是通过的。但是通过fastjson
的toString
方法之后就变成了空。
空气瞬间安静下来,场面一顿非常尴尬。
- 演示代码
public static void main(String[] args) {
Demo demo = new Demo("FunTester", "FunTester");
output(JSON.toJSONString(demo));
testOver();
}
static class Demo {
String name;
String value;
public Demo(String name, String value) {
this.name = name;
this.value = value;
}
}
- 控制台输出
INFO-> 当前用户:fv,IP:10.60.192.21,工作目录:/Users/fv/Documents/workspace/fun/,系统编码格式:UTF-8,系统Mac OS X版本:10.15.7
INFO-> {}
Process finished with exit code 0
经过一番文档和资料查询,基本判断是属性访问权限导致的,通过尝试增加public
修饰符,问题得到完美解决。
我最终还是选择了Groovy
作为工具类的语言,代码直接就可以跑通了。
公众号FunTester首发,原创分享爱好者,腾讯云和掘金社区首页推荐,知乎七级原创作者,欢迎关注、交流,禁止第三方擅自转载。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南