Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

360
Views
Why @Transient can't be used with val fields?

I wrote data class

data class FileHeader(
    val relativePath: String,
    val orderNumber: Long,
    val bodySize: Int
) : Serializable {
@Transient
var headerSize: Int = 0
    get() = relativePath.length + 8
}

It works as i expect.

But why i can't use @Transient with val field?

The error is:

This annotation is not applicable to target member property without backing field or delegate

Are there any reasons why it implemented in this way?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

The annotation

Marks the JVM backing field of the annotated property as transient, meaning that it is not part of the default serialized form of the object.

The default serialization works on fields and doesn't care about getter methods. So if there's no backing field, there's nothing to serialize (and nothing to mark as transient in bytecode). The annotation would be useless in this case, so the designers chose to make it an error.

If you don't see why there's no backing field:

A backing field will be generated for a property if it uses the default implementation of at least one of the accessors, or if a custom accessor references it through the field identifier.

With your var, the backing field is needed by the default setter; when you change it to val, it isn't.

over 4 years ago · Santiago Trujillo Report

0

Try this

@get:javax.persistence.Transient
val headerSize
  get() { ... }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!