Tag: 注释

调用Method.invoke时获取java.lang.NullPointerException

我正在关注Java annotaitons的本教程,并实现了Test annotation,如图所示。 但是在运行代码时,我得到以下输出。 java.lang.NullPointerException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:616) at TestAnnotationParser.parse(Demo.java:24) at Demo.main(Demo.java:51) Passed:0 Fail:1 以下是我的代码。 有人能指出我错了吗? import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.lang.reflect.Method; @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @interface Test { Class expected(); } class TestAnnotationParser { public void parse(Class clazz) throws Exception { Method[] methods = clazz.getMethods(); int […]

Hibernate unsaved-value注释

我想通过字段VERSION而不是字段ID强制Hibernate(4.2)检查对象持久性。 下面的xml应该有效: 但我想使用注释。 这个java代码够了吗? @Id public String getId() { return this.id; } @Version public Integer getVersion() { return this.version; } 如何指定unsaved-value标签? 我没有找到任何注释。 我已经读过某个地方,Hibernate足够聪明,可以猜测一个对象是否持久,但它并不太令人信服。 如果我想使用-1而不是null,该怎么办? 必须有办法实现这一点,不是吗? 谢谢你的帮助。 编辑 。 Hibernate 3.6参考指南说: “在Hibernate3中几乎从不需要unsaved-value属性,并且在注释中确实没有相应的元素。” 和 “分配的生成器使Hibernate使用unsaved-value =”undefined“。这会强制Hibernate转到数据库以确定实例是暂时的还是分离的,除非有版本或时间戳属性,或者您定义了Interceptor.isUnsaved() “。 我相信@Version对我来说已经足够了。

Java:覆盖或重载方法?

我在一个名为“PlaceParser”的类中有一个extends “ModelParser”的方法: protected Place parseModel(JSONObject element) … Place是Model的子类。 是否应将@Override注释添加到上面的代码中? 由于该方法具有不同的返回类型,这仍然算作覆盖具有相同名称和参数的基类方法/返回类型是否改变了“签名”? “ModelParser”方法看起来像“ModelT”也扩展了“Model”: protected abstract ModelT parseModel(JSONObject element) throws JSONException; 更新@Jon Skeet: 基类声明如下: public abstract class ModelParser { 我之前没有看到过类的样式声明。

是否可以在给定Class ?

我有一个Class Class并尝试调用newInstance()但是Java因为我无法实例化接口的明显原因而对我大吼大叫。 但我知道像EasyMock这样的框架完全能够实例化接口。 从我的Class获取一个完全愚蠢的Annotation实例需要什么?

类级别注释与接口

我正在查看一些代码,其中类级别注释用于向某些类“添加”属性,稍后使用reflection访问和使用这些属性。 我的问题:何时使用注释将新字段添加到类中,而不是使用接口。 这有什么好处和缺点?

静态函数中@Value注释的替代方法

在静态变量上使用@Value是不可能的。 @Value(“${some.value}”) static private int someValue; static public void useValue() { System.out.println(someValue); } 当我这样做时,打印0 。 那么什么是这个的好选择呢?

如何使用java配置和没有Web.xml处理Spring MVC中的404页面未找到exception

我想在我的Spring MVC Web应用程序中处理404页面未找到exception,我正在使用SPRING 4.2.5.RELEASE ,我已经阅读了有关此主题的几个问题,但类似的问题是使用不同的spring java配置。 我有一个全局exception处理程序控制器类,它具有我的所有exception,这个类工作正常,但我无法处理404页面未找到exception。 这是我按照教程学习的方法 1)我创建了一个名为ResourceNotFoundException的类,它从RuntimeException扩展而来,我把这个注释放在了类定义@ResponseStatus(HttpStatus.NOT_FOUND) 像这样: @ResponseStatus(HttpStatus.NOT_FOUND) public class ResourceNotFoundException extends RuntimeException { } 2)我在exception的控制器类中创建了这个方法 @ExceptionHandler(ResourceNotFoundException.class) @ResponseStatus(HttpStatus.NOT_FOUND) public String handleResourceNotFoundException() { return “notFoundJSPPage”; } 但是,当我放置一个不存在的URL时,我收到此错误“找不到带HTTP的HTTP请求的映射” 我读过的问题说我需要启用Dispatcher的true选项,但由于我的配置与其他问题不同,我没有Web.xml所以我无法应用。 这是我的Config.java @EnableWebMvc @Configuration @ComponentScan({“config”, “controllers”}) public class ConfigMVC extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler(“/resources/**”).addResourceLocations(“/WEB-INF/resources/”); } @Bean public UrlBasedViewResolver setupViewResolver() { UrlBasedViewResolver […]

空请求正文未被Spring @RequestBody @Valid注释捕获

我目前在Spring中遇到了@RequestBody注释的问题。 我目前在我的模型上正确设置了所有validation注释,并且在对象发布时它们工作得很好。 即使发布的请求主体完全为空或空对象“{}”,一切都按预期工作。 当有人试图发布“null”请求主体时,就会出现问题。 这以某种方式通过@Valid注释获取并且没有被捕获,当我尝试访问该对象时导致NullPointerException 。 我在下面粘贴了我的控制器片段。 @Secured({ ROLE_ADMIN }) @RequestMapping(method = RequestMethod.POST, consumes = { MediaType.APPLICATION_JSON_VALUE } ) public HttpEntity<Resource> addItem(@RequestBody @Valid Item item) throws Exception { Resource itemResource = this.itemResourceAssembler.toResource(this.itemService.save(item)); return new ResponseEntity<Resource>(itemResource, HttpStatus.CREATED); } 我在itemService.save()做了一些检查,看看数据库中是否存在一个项目,因为它被用作upsert。 当我访问传递给save的项时,我得到NullPointerException因为item为null。 我已经尝试使用@RequestBody的“required”参数,但只检查是否有POST的内容。 如上所述,只有当用户在没有引号作为请求主体的情况下发布“null”时,才会传递空项。 是否有自动的Spring注释或配置来阻止此null被传递,或者我应该只是把if(item == null) throw new Exception(); 在我的所有控制器中,这可能会出现?

这个嵌套注释做什么/允许什么?

我正在查看@org.hibernate.validator.constaints.NotEmpty注释: @Documented @Constraint(validatedBy = { }) @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) @Retention(RUNTIME) @ReportAsSingleViolation @NotNull @Size(min = 1) public @interface NotEmpty { String message() default “{org.hibernate.validator.constraints.NotEmpty.message}”; Class[] groups() default { }; Class[] payload() default { }; /** * Defines several {@code @NotEmpty} annotations on the same element. */ @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER […]

为什么不允许接口作为注释成员?

考虑以下代码: @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface Bar { Foo foo() default FooImpl.FooConstant; } 编译错误: 注释值不是允许类型 如果我用FooImpl替换Foo ,则接受代码。 这种行为的原因是什么?