关于类名大小写引发的MissingPropertyException错误

之前就听说过在写类名时候要主要大写,一直也按照规矩来,今天写代码时无意中写成类名首字母小写带出了MissingPropertyException的异常,截图在下。

(1)修改前:类名首字母小写——代码段的情况


(2)修改前:类名首字母小写——包的情况


(3)修改前:类名首字母小写——引出的MissingPropertyException异常


(4)修改后:类名首字母大写——代码段的情况正常


(5)修改后:类名首字母大写——包的情况正常



总结:从上面我们可以看到,小写的类名首字母会引发MissingPropertyException异常,需要在今后的编程中注意。

PS:有哪位大神可以回复讲解一下这是什么原理啊?万分感谢!

----------------------------------------------------------------------------------------------------------------------------

续:关于这个类名大小写引发的MissingPropertyException问题的个人见解解析

后来研究了一下,发现应该是设定为groovy项目引发的问题,因为groovy和java对类的识别机制是不同的。

下面写了很小的demo来让程序将这个问题表现出来:

(1)java项目中的代码以及输出


(2)java项目中的包的情况


(3)groovy项目中的代码


(4)groovy代码中的包的情况


总结:虽然我没有完全清晰的理解java和groovy对类名的判断机制到底有什么不同,但是通过demo可以清楚的看到,就连java项目中可以编译执行的myJavaClass也由于类名的首字母小写,导致无法在groovy中获得合法编译。目前看到的材料说,首字母小写的类名会被groovy视为变量而不是类,所以出现图(3)中的“myJavaClass jc2 =new myJavaClass();”中的第一个myJavaClass被视为变量,所以不满足语法且报错,而new后面的明显被声明为类的myJavaClass可以找到并且被识别为类。

留在这里,以后进一步学习。



### Qt Creator 中类名与文件名大小写不一致问题及解决方法 在使用 Qt Creator 创建新时,可能会遇到类名和文件名大小写不一致的问题。这种不一致通常会导致编译错误或链接错误,因为 C++ 对大小写敏感[^1]。以下是关于如何处理此问题的详细说明: #### 1. 类名与文件名的命名规范 根据 Qt 的命名规范,类名应采用首字母大写的驼峰式命名法(CamelCase),例如 `MyClass` 或 `QPushButton`[^2]。而文件名通常会与类名保持一致,以确保代码的可读性和一致性。例如,类名为 `MyClass` 的头文件应命名为 `myclass.h`,对应的源文件为 `myclass.cpp`[^3]。 #### 2. 文件名大小写敏感性问题 在某些操作系统(如 Linux 或 macOS)中,文件系统是区分大小写的,因此如果类名和文件名的大小写不一致,可能会导致编译器无法找到正确的头文件。例如: - 如果类名为 `MyClass`,但头文件被命名为 `MYCLASS.H`,则在 Linux 系统上可能会引发以下错误: ```bash fatal error: myclass.h: No such file or directory ``` #### 3. 解决方法 以下是几种解决类名与文件名大小写不一致问题的方法: - **手动更正文件名** 在创建后,检查生成的文件名是否与类名一致。如果不一致,可以手动将文件重命名为符合规范的形式。例如,将 `MYCLASS.H` 改为 `myclass.h`[^1]。 - **修改 #include 指令** 如果无法更改文件名,可以在代码中调整 `#include` 指令以匹配实际的文件名。例如: ```cpp // 正确的 include 指令 #include "myclass.h" ``` - **使用 Qt Creator 的向导** 在 Qt Creator 中创建新时,使用内置的“新建”向导工具。该工具会自动生成与类名一致的文件名,从而避免大小写不一致的问题。操作步骤如下: - 选择菜单栏中的 `File -> New File or Project...` - 在弹出的窗口中选择 `Classes -> C++ Class` - 输入类名(如 `MyClass`),Qt Creator 会自动将其转换为小写的文件名(如 `myclass.h` 和 `myclass.cpp`)。 - **配置项目文件(.pro 文件)** 确保 `.pro` 文件中正确列出了所有头文件和源文件。例如: ```plaintext HEADERS += myclass.h SOURCES += myclass.cpp ``` #### 4. 示例代码 以下是一个简单的定义示例,展示了正确的类名和文件名匹配方式: ```cpp // myclass.h #ifndef MYCLASS_H #define MYCLASS_H class MyClass { public: MyClass(); void setMovie(); QString getData(); private: bool isOpen; }; #endif // MYCLASS_H ``` ```cpp // myclass.cpp #include "myclass.h" MyClass::MyClass() : isOpen(false) {} void MyClass::setMovie() { // 实现逻辑 } QString MyClass::getData() { return "Sample Data"; } ``` ### 注意事项 - 在跨平台开发中,始终确保类名和文件名的大小写一致,以避免因文件系统差异导致的错误。 - 使用 Qt Creator 的快捷键(如 `Ctrl + Shift + F` 进行全局查找)可以帮助快速定位和修复大小写不一致的问题[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值