java 项目结构 文件说明 潜规则 java入门-CSDN博客
D:\now\scx\scx-cloud\scx-cloud\scx-module-system\scx-module-system-biz\src\main\java\com\scm\scx\module\system\controller\app\compublic\compublicController.java:29:8 java: 类 CompublicController 是
这个错误信息指出你的Java类 CompublicController
被声明为公共的(public),但它没有被放置在一个与类名完全匹配的文件中。在Java中,如果一个类被声明为public,那么它必须被放置在一个与类名完全相同的文件中(包括大小写)。
你的类名是 CompublicController
,但是你的文件名是 compublicController.java
。注意这里的大小写不一致。Java是大小写敏感的,所以文件名 compublicController.java
和类名 CompublicController
被视为不同的。
为了解决这个问题,你应该将文件名从 compublicController.java
改为 CompublicController.java
。这样,文件名就与类名完全匹配了。
修改文件名的步骤如下:
compublicController.java
。CompublicController.java
。完成这些步骤后,你的Java类应该能够正确编译,不再显示这个错误。如果你使用的是IDE,它可能会自动更新项目视图以反映这一更改。如果你使用的是文本编辑器或命令行工具,确保在编译时指定正确的文件名。
- package com.scm.scx.module.product.enums.comment;
-
- import com.scm.scx.framework.common.core.IntArrayValuable;
- import lombok.AllArgsConstructor;
- import lombok.Getter;
-
- import java.util.Arrays;
-
- /**
- * 商品修改价格的审批状态枚举
- *
- * @author cao919
- */
- @Getter
- @AllArgsConstructor
- public enum ProductSkuPriceRecordAuditStatusEnum implements IntArrayValuable {
-
- NONE(2, "待审核"),
- APPROVE(4, "审批通过"),
- REJECT(32, "审批不通过"),;
-
- public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(ProductSkuPriceRecordAuditStatusEnum::getStatus).toArray();
-
- /**
- * 审批状态
- */
- private final Integer status;
- /**
- * 状态名
- */
- private final String name;
-
- @Override
- public int[] array() {
- return ARRAYS;
- }
-
- }
使用
- if(ProductSkuPriceRecordAuditStatusEnum.APPROVE.getStatus()==updateReqVO.getAuditStatus()||ProductSkuPriceRecordAuditStatusEnum.REJECT.getStatus()==updateReqVO.getAuditStatus())
- {
-
- }
- Integer aaa = new Integer(10); // 或者 Integer aaa = 10; (自动装箱)
-
- if (aaa != null) {
- // aaa 不为空,可以进行一些操作
- System.out.println("aaa 的值是: " + aaa);
- } else {
- // aaa 为空
- System.out.println("aaa 是空的");
- }
虽然直接判断 Integer
是否为 null
是最常见和直接的方法,但在Java 8中引入了 Optional
类,它提供了一种更好的方式来处理可能为 null
的情况。你可以将可能为 null
的 Integer
封装在 Optional
中,然后使用它的方法来进行非空检查或其他操作。
- import java.util.Optional;
-
- public class Main {
- public static void main(String[] args) {
- Integer aaa = new Integer(10); // 或者 Integer aaa = 10;
-
- Optional
optionalAaa = Optional.ofNullable(aaa); -
- optionalAaa.ifPresent(value -> System.out.println("aaa 的值是: " + value));
-
- // 或者
- if (optionalAaa.isPresent()) {
- System.out.println("aaa 的值是: " + optionalAaa.get());
- } else {
- System.out.println("aaa 是空的");
- }
- }
- }
Optional
主要是为了编写更清晰、更易读的代码,特别是在处理可能为 null
的返回值时。null
检查中,直接使用 if (aaa != null)
通常是更直接和高效的方法。int
与 Integer
)之间自动转换。但频繁地使用自动装箱和拆箱可能会影响性能,因为它们涉及到额外的对象创建和销毁。java: Annotation processing is not supported for module cycles. Please ensure that all modules from cycle [scx-module-crm-biz,scx-module-crm-api] are excluded from annotation processing
初始化数据 直接数字后面加L
Long tempLong=0L;
在Java中,将long
类型的变量转换为String
类型,有几种常见的方法。以下是几种实现方式:
String.valueOf()
方法- long temp = 123456789L;
- String strTemp = String.valueOf(temp);
- System.out.println(strTemp);
Long.toString()
方法- long temp = 123456789L;
- String strTemp = Long.toString(temp);
- System.out.println(strTemp);
虽然这不是转换long
到String
的最佳或推荐方式,但你可以通过将long
与空字符串连接来实现转换。不过,这种方法可能会因为隐式类型转换和字符串连接的开销而在性能上不如前两种方法。
- long temp = 123456789L;
- String strTemp = "" + temp;
- System.out.println(strTemp);
String.format()
方法如果你需要更复杂的格式化(比如指定小数点后的位数,尽管这对于long
转换为String
不是必需的),你可以使用String.format()
方法。对于简单的转换,你可以这样使用:
- long temp = 123456789L;
- String strTemp = String.format("%d", temp);
- System.out.println(strTemp);
在这里,%d
是十进制整数的格式说明符。
对于大多数用途,String.valueOf(long l)
或Long.toString(long l)
是转换long
到String
的首选方法,因为它们既清晰又高效。字符串连接方法("" + longValue
)虽然简单,但在性能敏感的应用中可能不是最佳选择。String.format()
方法提供了更多的格式化选项,但在简单的类型转换中可能稍显繁琐。
Java中的out和ref引用参数
在Java中,方法的参数可以是值类型(如int、float等)或引用类型(如对象)。对于值类型,方法的参数传递的是该值的一个副本,而对于引用类型,方法的参数传递的是引用的一个副本。这意味着,在方法内部修改值类型的参数不会影响到原始值,而修改引用类型的参数可能会影响到原始对象。
然而,Java并不支持像C#中的out和ref关键字那样直接传递参数的引用。但是,我们可以通过其他方式实现类似的效果。
- public class OutParam
{ - private T value;
-
- public OutParam(T value) {
- this.value = value;
- }
-
- public T getValue() {
- return value;
- }
-
- public void setValue(T value) {
- this.value = value;
- }
- }
然后,在方法中,我们可以将该类的实例作为参数,并在方法内部设置要返回的值。
- public void updateValue(OutParam
outParam) { - outParam.setValue(42);
- }
-
- public static void main(String[] args) {
- OutParam
outParam = new OutParam<>(0); - updateValue(outParam);
- System.out.println(outParam.getValue()); // 输出:42
- }
通过这种方式,我们可以在方法内部修改参数的值,然后在方法外部获取到修改后的值。
ref引用参数的实现
与out参数类似,如果我们想要模拟C#中的ref参数,可以通过定义一个包含要传递的值的类来实现。
- public class RefParam
{ - private T value;
-
- public RefParam(T value) {
- this.value = value;
- }
-
- public T getValue() {
- return value;
- }
-
- public void setValue(T value) {
- this.value = value;
- }
- }
然后,在方法中,我们可以将该类的实例作为参数,并在方法内部修改该实例的值。
- public void updateValue(RefParam
refParam) { - refParam.setValue(42);
- }
-
- public static void main(String[] args) {
- RefParam
refParam = new RefParam<>(0); - updateValue(refParam);
- System.out.println(refParam.getValue()); // 输出:42
- }
通过这种方式,我们可以在方法内部修改参数的值,并且这种修改会在方法外部生效。
总结
虽然Java没有像C#中的out和ref关键字那样直接支持引用参数,但我们可以通过定义包含要返回或传递值的类来模拟这种功能。使用out参数,我们可以在方法内部设置要返回的值,并在方法外部获取到该值。使用ref参数,我们可以在方法内部修改参数的值,并使这种修改在方法外部生效。
尽管这种实现方式略显复杂,但它提供了一种在Java中处理引用参数的方法。