@override不能用在哪些地方
时间: 2023-12-09 19:05:42 浏览: 178
@override注解只能用于覆盖父类中的方法,不能用于其他场合。以下是一些情况下不能使用@override注解的示例:
1. 不能用于覆盖接口中的方法,因为接口中的方法没有实现。
2. 不能用于覆盖父类中的私有方法,因为私有方法不可见。
3. 不能用于覆盖父类中的final方法,因为final方法不能被重写。
4. 不能用于覆盖父类中的静态方法,因为静态方法是类级别的,而不是实例级别的。
总之,@override注解只能用于覆盖父类中的非私有方法,且方法签名必须与父类中的方法一致。
相关问题
public class BigDecimalPropertyEditor extends PropertyEditorSupport { @Override public void setAsText(String text) throws IllegalArgumentException { setValue(new BigDecimal(text)); } @Override public String getAsText() { BigDecimal value = (BigDecimal) getValue(); return (value != null) ? value.toString() : ""; } } static { PropertyEditorManager.registerEditor(BigDecimal.class, BigDecimalPropertyEditor.class); PropertyEditor editor = PropertyEditorManager.findEditor(BigDecimal.class); System.out.println(editor); } 为什么我这段代码运行的打印的是null
根据您提供的代码,我注意到您在使用`PropertyEditorManager.findEditor(BigDecimal.class)`方法时打印了`editor`。但是,这个方法返回的是一个`PropertyEditor`实例,而不是`BigDecimalPropertyEditor`的实例。
在您的代码中,您已经通过`PropertyEditorManager.registerEditor(BigDecimal.class, BigDecimalPropertyEditor.class)`将`BigDecimalPropertyEditor`注册为`BigDecimal`类型的属性编辑器。这样,在其他地方使用`PropertyEditorManager.findEditor(BigDecimal.class)`方法时,会返回一个与`BigDecimal`类型关联的属性编辑器实例。
如果您想要获取到`BigDecimalPropertyEditor`的实例,您可以直接实例化它,而不使用`PropertyEditorManager.findEditor(BigDecimal.class)`方法。
以下是修改后的代码示例:
```java
public class BigDecimalPropertyEditor extends PropertyEditorSupport {
// 省略其他代码...
public static void main(String[] args) {
BigDecimalPropertyEditor editor = new BigDecimalPropertyEditor();
System.out.println(editor);
}
}
```
通过上述修改,您应该能够正确地打印出`BigDecimalPropertyEditor`的实例了。希望能解决您的问题!如果您还有其他疑问,请随时提问。
优化代码中的问题,简洁的代码 @Override public boolean findUserInfoByIdAndName(int age, String name) throws Exception { if (StringUtils.isEmpty(name)) { throw new Exception("用户名不能为空"); } if (age == null) { throw new Exception("年龄不能为空"); } final Integer MIN_AGE = 18; final Integer MAX_AGE = 120; if (age < MIN_AGE || age > MAX_AGE) { throw new Exception("年龄必须大于18且小于120"); } UserInfo userInfo = deviceInfoMapper.findUserInfoByIdAndName(name, age); if (userInfo == null) { throw new Exception("未找到符合条件的用户信息"); } return true; } }
可以优化的地方如下:
1. 可以使用Java8的Optional类来避免null的判断,也可以使用Objects.requireNonNull方法来抛出空指针异常。
2. 可以在方法签名中使用基本数据类型,而不是其包装类型。
3. 可以使用自定义异常类来替换Exception,以便更好地描述错误原因。
4. 可以使用静态导入来简化代码。
下面是优化后的代码示例:
```
@Override
public boolean findUserInfoByIdAndName(int age, String name) throws UserNotFoundException, InvalidParameterException, NullPointerException {
Objects.requireNonNull(name, "用户名不能为空");
if (age < 18 || age > 120) {
throw new InvalidParameterException("年龄必须大于18且小于120");
}
UserInfo userInfo = deviceInfoMapper.findUserInfoByIdAndName(name, age);
if (userInfo == null) {
throw new UserNotFoundException("未找到符合条件的用户信息");
}
return true;
}
```
注意,这个示例中的UserNotFoundException和InvalidParameterException需要自定义实现。
阅读全文