# Annotation Type Mapped

@Retention(CLASS) @Target(TYPE) public @interface Mapped

Marks a POJO or `PropertyBusinessObject` as a target for the build-time JSON / XML mapping processor.

The Codename One Maven plugin scans every `@Mapped` class at build time and emits a reflection-free `Mapper` next to it. Application code reaches the generated mapper through `com.codename1.mapping.Mappers`:

    @Mapped
    public class User {
        @JsonProperty("first_name")
        public String firstName;
        public int age;
        @JsonIgnore
        transient String passwordHash;
    }

    String json = Mappers.toJson(new User());
    User u = Mappers.fromJson(json, User.class);

Either public fields or JavaBeans-style accessors (`getX` / `setX`, `isX` for booleans) are walked. `com.codename1.properties.Property` fields are routed through `Property#get` / `Property#set` so the same class can expose either programming model. Nothing on the runtime side uses reflection or `Class.forName` -- every read and write is a direct symbol reference that the iOS `Class.forName` ban and ParparVM rename pass leave intact.

The `@XmlRoot` / `@XmlElement` / `@XmlAttribute` / `@XmlTransient` annotations control the XML projection on top of the same fields.