gpt4 book ai didi

java - 您是否使用(或定义)非标准注释,出于什么原因。递归注释怎么样?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:23:42 25 4
gpt4 key购买 nike

这个问题说明了一切。

对于专家来说,SUN java 5 编译器接受递归注释(与 langspec 相反),而后来的编译器不接受是有原因的吗?我的意思是,有什么理由反对递归注释。

编辑:递归注解类似于:

@Panel(layout=BorderLayout.class,
nested={
@Panel(region=NORTH, layout=FlowLayout.class, ...)
@Panel(region=SOUTH, layout=FlowLayout.class, ...)
}
)

最佳答案

首先——我不确定递归注释是什么意思。您的意思是可以包含对相同类型的其他注释的引用的注释吗?有点像

@Panel(layout=BorderLayout.class,
nested={
@Panel(region=NORTH, layout=FlowLayout.class, ...)
@Panel(region=SOUTH, layout=FlowLayout.class, ...)
}
)

(这将是我想在可能的情况下使用它的地方的示例...)

至于我对自定义注释(和处理器)的使用:代码生成。

参见 http://code.google.com/p/javadude/wiki/Annotations

例如,JavaBean 属性:

@Bean(
properties={
@Property(name="name"),
@Property(name="phone", bound=true),
@Property(name="friend", type=Person.class, kind=PropertyKind.LIST)
}
)
public class Person extends PersonGen {
// generated superclass PersonGen will contain getters/setters
// field definitions, property change support...
}

或混合示例

package sample;

import java.util.List;

public interface IFlightAgent {
List<IFlight> getFlight();
void reserve(IFlight flight);
}

public interface ICarAgent {
List<ICar> getCars();
void reserve(ICar car);
}

public interface IHotelAgent {
List<IHotel> getHotels();
void reserve(IHotel hotel);
}

package sample;

import com.javadude.annotation.Bean;
import com.javadude.annotation.Delegate;

@Bean(delegates = {
@Delegate(type = IHotelAgent.class,
property = "hotelAgent",
instantiateAs = HotelAgentImpl.class),
@Delegate(type = ICarAgent.class,
property = "carAgent",
instantiateAs = CarAgentImpl.class),
@Delegate(type = IFlightAgent.class,
property = "flightAgent",
instantiateAs = FlightAgentImpl.class)
}
)
public class TravelAgent extends TravelAgentGen
implements IHotelAgent, ICarAgent, IFlightAgent
{
// generated superclass TravelAgentGen will create instances
// of the "instantiateAs" classes and delegate the interface
// methods to them
}

参见 The drawbacks of annotation processing in Java?以及我对使用它们的一些潜在问题的回答。

关于java - 您是否使用(或定义)非标准注释,出于什么原因。递归注释怎么样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/730240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com