我有以下代码
public abstract class BaseAdapter<T, V extends BaseAdapter.ViewHolder> extends ArrayAdapter<T> {
public BaseAdapter(Context context, int resource, Collection<T> collection) {
// typical constructor logic
}
// some other custom defined methods
public static class ViewHolder {
// custom defined logic
}
}
public class ModelAdapter extends BaseAdapter<Model, ModelAdapter.ModelViewHolder> {
public ModelAdapter(Context context, int resource, Collection<Model> collection) {
super(context, resource, collection);
// typical constructor logic
}
public static class ModelViewHolder extends ViewHolder {
// custom defined logic
}
}
Run Code Online (Sandbox Code Playgroud)
BaseAdapter和ModelAdapter位于单独的文件中.问题是我在尝试定义ModelAdapter时遇到编译错误:在当前上下文中无法访问 ModelViewHolder …
我正在使用 spring boot (1.3.4.RELEASE) 并且有一个关于新的 @AliasFor 注释在 4.2 中引入 spring 框架的问题
考虑以下注释:
看法
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Component
public @interface View {
String name() default "view";
}
Run Code Online (Sandbox Code Playgroud)
合成的
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@View
public @interface Composite {
@AliasFor(annotation = View.class, attribute = "name")
String value() default "composite";
}
Run Code Online (Sandbox Code Playgroud)
然后我们注释一个简单的类如下
@Composite(value = "model")
public class Model {
}
Run Code Online (Sandbox Code Playgroud)
运行以下代码时
ConfigurableApplicationContext context = SpringApplication.run(App.class, args);
String[] beanNames = context.getBeanNamesForAnnotation(View.class);
for (String beanName : beanNames) {
View annotationOnBean = context.findAnnotationOnBean(beanName, View.class);
System.out.println(annotationOnBean.name());
}
Run Code Online (Sandbox Code Playgroud)
我期待输出是model,但它的观点 …