我经常希望能够正确地装饰 java 类,即为它们添加行为。我知道来自 ruby 的 mixin,而且我知道它们会变得非常混乱。
我想出了这样一个语言结构的理论想法:
package org.test.decorator;
public decorator ListPatch<E> extends List<E> {
public E last() {
return this.get(this.size() - 1);
}
}
this
将允许访问公共成员List
和装饰器本身。
然后在我可以使用的课程中:
package org.test.decorator;
decoration org.test.decorator.ListPatch;
public MyClass {
public void foo() {
List<String> list = Lists.newArrayList();
list.add("test");
System.out.println(list.last());
}
}
我对编译器没有太多了解,所以我想知道这样的事情是否可能。此外,如果它实际上将是一个改进。