栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

lombok 实验性注解之 @Delegate

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

lombok 实验性注解之 @Delegate

最全的 lombok 注解详情(随着版本不定时更新) 一、注解介绍

作用于容器变量,为该变量生成一堆常用的方法,这些方法都是容器中的方法

二、属性介绍(非必选)
  • types:指定代理方法的类、值为 类名.class
  • excludes:排除指定类,和 types 相反
三、实战演练
public class 李沁 {
	@Delegate
	private List list = new ArrayList();
	
	public static void main(String[] args) {
		李沁 l = new 李沁();
		l.add("李沁");
	}
}
编译后
public class 李沁 {
  	private List list;
	
  	public 李沁() {
    	this.list = new ArrayList();
  	}
	
  	public static void main(String[] args) {
    	李沁 l = new 李沁();
    	l.add("李沁");
    	System.out.println(l);
  	}
	
  	public int size() {return this.list.size();} 
  	public boolean isEmpty() {return this.list.isEmpty();} 
  	public boolean contains(Object arg0) {return this.list.contains(arg0);} 
  	public Iterator iterator() {return this.list.iterator();} 
  	public Object[] toArray() {return this.list.toArray();} 
  	public  T[] toArray(T[] arg0) {return this.list.toArray(arg0);} 
  	public boolean add(String arg0) {return this.list.add(arg0);} 
  	public boolean remove(Object arg0) {return this.list.remove(arg0);} 
  	public boolean containsAll(Collection arg0) {return this.list.containsAll(arg0);} 
  	public boolean addAll(Collection arg0) {return this.list.addAll(arg0);} 
  	public boolean addAll(int arg0, Collection arg1) {return this.list.addAll(arg0, arg1);} 
  	public boolean removeAll(Collection arg0) {return this.list.removeAll(arg0);} 
  	public boolean retainAll(Collection arg0) {return this.list.retainAll(arg0);} 
  	public void replaceAll(UnaryOperator arg0) {this.list.replaceAll(arg0);} 
  	public void sort(Comparator arg0) {this.list.sort(arg0);} 
  	public void clear() {this.list.clear();} 
  	public String get(int arg0) {return ((String)this.list.get(arg0));} 
  	public String set(int arg0, String arg1) {return ((String)this.list.set(arg0, arg1));} 
  	public void add(int arg0, String arg1) {this.list.add(arg0, arg1);} 
  	public String remove(int arg0) {return ((String)this.list.remove(arg0));} 
  	public int indexOf(Object arg0) {return this.list.indexOf(arg0);} 
  	public int lastIndexOf(Object arg0) {return this.list.lastIndexOf(arg0);} 
  	public ListIterator listIterator() {return this.list.listIterator();} 
  	public ListIterator listIterator(int arg0) {return this.list.listIterator(arg0);} 
  	public List subList(int arg0, int arg1) {return this.list.subList(arg0, arg1);} 
  	public Spliterator spliterator() {return this.list.spliterator();} 
  	public boolean removeIf(Predicate arg0) {return this.list.removeIf(arg0);} 
  	public Stream stream() {return this.list.stream();} 
  	public Stream parallelStream() {return this.list.parallelStream();} 
  	public void forEach(Consumer arg0) {this.list.forEach(arg0);}
}
属性拓展
public class 李沁 {
	private interface 乔欣 {
		boolean add(String name);
	}
	
	@Delegate(excludes = {乔欣.class})
	private List list = new ArrayList();
	
	public static Integer i = 0;
	
	public static void main(String[] args) {
		李沁 l = new 李沁();
		l.add("李沁");
		System.out.println(l);
		System.out.println(i);
	}
	
	private boolean add(String name) {
		i++;
		return false;
	}
}


public class 李沁 {
	private interface 乔欣 {
		boolean add(String name);
	}
	
	@Delegate(types = {乔欣.class})
	private List list = new ArrayList();
	
	public static void main(String[] args) {
		李沁 l = new 李沁();
		l.add("李沁");
	}
}
四、温馨提示

一个类中只能使用一个 @Delegate 注解,因为使用多个会生成多个 size() 方法,从而会导致编译报错
我们可以手写覆盖 @Delegate 注解所生成的容器常用方法,但是返回类型必须和原方法相同,参数类型必须和容器的泛型相同

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/531539.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号