当我通过http://www.jsonschema2pojo.org/生成POJO时,我得到这样的结果:
import javax.annotation.Generated;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
@Generated("org.jsonschema2pojo")
public class Name {
//...
}
Run Code Online (Sandbox Code Playgroud)
但Android Studio无法识别javax.annotation.Generated,我必须删除两行代码
import javax.annotation.Generated;
Run Code Online (Sandbox Code Playgroud)
和
@Generated("org.jsonschema2pojo")
Run Code Online (Sandbox Code Playgroud)
形成每一个POJO,这是一种痛苦.有没有办法压制http://www.jsonschema2pojo.org/添加该注释?
在介绍 JPMS 服务时,Java 语言规范的 7.7.4 节指出“服务类型必须是类类型、接口类型或注释类型”。
我正在努力理解允许注释的意义。我的理解是服务的 JPMS 概念是我们期望在运行时选择实现的东西。看起来,为了有用,实现至少需要有可能是不同于标识所请求服务的原始类的东西。但我相信注释不能使用“扩展”,所以这永远不会发生?从那以后,我相信如果我尝试使用注释类型创建服务,我将不可避免地遇到这样一种情况,即服务查找可能返回的唯一内容,例如 SomeAnnotation。类将完全是 SomeAnnotation。这似乎毫无意义,所以我必须假设我错过了一些东西。
任何人都可以阐明这一点,也许可以提供注释如何成为“服务”的示例?
我写了以下注释:
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.SOURCE)
@Target({ElementType.METHOD})
public @interface Warning {
}
Run Code Online (Sandbox Code Playgroud)
这是为了注释那些在不小心调用时可能导致问题的方法.我在我的项目中添加了一个注释处理器,但这只在javac命令的日志输出中提供了警告.我希望此警告与其他lint警告一起出现在Android Studio中,并且调用带有此批注的方法.这就是我尝试编写自定义lint规则的原因.我有lint规则的基本框架:
import com.android.tools.lint.detector.api.Category;
import com.android.tools.lint.detector.api.Detector;
import com.android.tools.lint.detector.api.Implementation;
import com.android.tools.lint.detector.api.Issue;
import com.android.tools.lint.detector.api.Scope;
import com.android.tools.lint.detector.api.Severity;
public class CaimitoDetector extends Detector implements Detector.JavaScanner {
public static final Issue ISSUE = Issue.create(
"WarningAnnotation",
"This method has been annotated with @Warning",
"This method has special conditions surrounding it's use, be careful when using it and refer to its documentation.",
Category.USABILITY, 7, Severity.WARNING,
new Implementation(CaimitoDetector.class, Scope.JAVA_FILE_SCOPE));
@Override
public void …Run Code Online (Sandbox Code Playgroud) Java的内部类可以是静态的也可以是非静态的.非静态内部类与封闭类的实例相关联.
注释是一种Java接口,与任何其他类一样,它们可以在类中定义.同样,它们可以声明为静态或非静态.这两个选择之间有什么区别,它们在使用代码时的使用方式有何不同,是否有任何使用其中一种选择的情况?
例:
public class AnnotationContainer {
public static @interface StaticAnnotation {}
public @interface NonstaticAnnotation {}
}
Run Code Online (Sandbox Code Playgroud) 我发现@Transactional用于确保存储库方法或服务方法上的事务。
@Lock用于存储库方法以确保锁定实体以提供隔离。
在我的脑海中提出了一些问题:
- 这两个注释的主要区别/关系是什么?
- 何时使用
@Transactional,何时使用@Lock?- 是
@Lock在分布式数据库系统提供数据并发性和一致性有用吗?
我正在使用推土机来映射物体.如何使用带有dozer的注释忽略(排除)字段?
就像是:
class A
{
@IgnoreField
public String someField;
}
class B
{
public String someField;
}
.........................................
B obj = mapper.map(A_obj, B.class);
Run Code Online (Sandbox Code Playgroud)
非常感谢!!
我想在我的 Spring Boot 应用程序中创建一个自定义注释,它总是向我的类级别 RequestMapping path添加前缀。
我的控制器:
import com.sagemcom.smartvillage.smartvision.common.MyApi;
import org.springframework.web.bind.annotation.GetMapping;
@MyApi("/users")
public class UserController {
@GetMapping("/stackoverflow")
public String get() {
return "Best users";
}
}
Run Code Online (Sandbox Code Playgroud)
我的自定义注释
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.core.annotation.AliasFor;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RestController
@RequestMapping(path = "/api")
public @interface MyApi {
@AliasFor(annotation = RequestMapping.class)
String value();
}
Run Code Online (Sandbox Code Playgroud)
目标:最终的映射如下:/api/users/stackoverflow
笔记:
server.servlet.context-path不是一个选项,因为我想创建其中几个我想创建一个java 注释,它在编译时生成一个方法,例如 Lombok:我有这个类:
@MyNewAnnotation()
public class ClassTest {
private String name;
private Integer id;
private String lastName;
public final static String COL_NAME = "NAME";
public final static String COL_LAST_NAME = "LAST_NAME";
}
Run Code Online (Sandbox Code Playgroud)
我希望 myNewAnnotation 可以生成getCol返回的方法,"NAME, LAST_NAME"例如:
public static String getCol() {
return COL_NAME + "," + COL_LAST_NAME;
}
Run Code Online (Sandbox Code Playgroud)
注释必须读取以“COL_”开头的所有属性,并在编译时生成新方法,或多或少类似于 Lombok 生成 getter 或 setter 时的情况
我用一个方法创建了以下界面:
public interface Greeting {
public void perform();
}
Run Code Online (Sandbox Code Playgroud)
我试图将接口的一个实例传递给 greet() 方法。
public class Greeter {
public void greet(Greeting greeting){
greeting.perform();
}
public static void main(String[] args) {
Greeter greeter=new Greeter();
}
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个问候界面的实现:
public class HelloWorldGreeting implements Greeting {
@Override
public void perform() {
System.out.println("Hello World");
}
}
Run Code Online (Sandbox Code Playgroud)
我收到了错误(HelloWorldGreeting 类型的方法 perform() 必须覆盖或实现超类型方法),快速修复为“删除@Override 注释”
我还检查了编译器配置。只有 1.8。
请让我知道为什么会出现错误或帮助我修复它。提前致谢。
java annotations compiler-errors javacompiler java-annotations
我需要创建一个新的注释,用于在环境变量var == false. 我尝试使用JsonAnnotationIntrospector,但无法获得预期的输出。
public class Vehicle {
String vehicle_name;
String vehicle_model;
//getters and setters
@MyAnnotation
public String getVehicle_model() {
return vehicle_model;
}
}
Run Code Online (Sandbox Code Playgroud)
这里我需要删除vehicle_model环境变量时的属性var == false。
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
@JsonIgnore
public @interface MyAnnotation {
}
Run Code Online (Sandbox Code Playgroud)
这是我的自定义注释的声明。有人可以告诉我应该如何编写 Introspector 部分才能获得我需要的功能吗?
提前致谢。
编辑:我的尝试JacksonAnnotationIntrospector
public class MyAnnotationIntrospector extends JacksonAnnotationIntrospector {
@Override
public boolean hasIgnoreMarker(AnnotatedMember annotatedMember) {
//need this part
}
}
Run Code Online (Sandbox Code Playgroud)
的实现ObjectMapper是
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(this);
Run Code Online (Sandbox Code Playgroud) java-annotations ×10
java ×8
android ×2
annotations ×2
spring ×2
android-lint ×1
dozer ×1
jackson ×1
java-9 ×1
java-module ×1
javacompiler ×1
json ×1
lombok ×1
mapping ×1
spring-boot ×1