Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 3241752
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 17, 20262026-05-17T18:14:07+00:00 2026-05-17T18:14:07+00:00

Suppose I want to have a class like Java Date . Its only data

  • 0

Suppose I want to have a class like Java Date. Its only data member is a long which represents the milliseconds since 1970.

Would/Could it be of any performance benefit of just making a new Scala type:

type PrimitiveDate = Long

Then you can add methods by using implicit conversion, like it is done for int with RichInt. Does this “boxing” of the primitive type into a rich class involve any overhead (class creation)? Basically you could just have a static method

def addMonth(date: PrimitiveDate, months: Int): PrimitiveDate = date + 2592000000 * months

and let the type system figure out that it has to be applied when d addMonth 5
appears inside your code.

Edit

It seems that the alias you create by writing type PrimitiveDate = Long is not enforced by the scala compiler. Is creating a proper class, enclosing the Long, the only way to create an enforced type in Scala?

How useful do you consider being able to create an enforced type alias for primitive types?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-17T18:14:07+00:00Added an answer on May 17, 2026 at 6:14 pm

    Well, escape analysis should mean that the most recent JVMs do not actually have to create your rich wrapper in order to call the addMonth method.

    The extent to which this actually occurs in practice will obviously depend on how much of a runtime hotspot the JVM decides that these methods are adding in object creation. When escape analysis is not happening, obviously the JVM will have to “box” (as you say) the Long in a new instance of the wrapper class. It doesn’t involve “class creation” – it would involve “creating an instance of a class”. This instance, being short-lived would then be GC-d immediately, so the overhead (whilst small) is:

    • memory allocation for the instance
    • GC-ing the instance

    These are obviously only going to be any kind of problem if you are definitely writing very low-latency code where you are trying to minimize garbage creation (in a tight loop). Only you know whether this is the case.

    As for whether the approach will work for you (and escape analysis come to your aid), you’d have to test in the wild. Micro-benchmarks are notoriously difficult to write for this kind of thing.


    The reason I don’t quite like these type aliases being part of a public API is that scala does not really enforce them as strictly as I would like. For example:

    type PrimitiveDate = Long
    type PrimitiveSpeed = Long
    type Car = String
    type Meeting = String
    
    var maxSpeeds : Map[Car, PrimitiveSpeed] = Map.empty
    
    //OOPS - much too easy to accidentally send the wrong type
    def setDate(meeting : Meeting, date : PrimitiveDate) = maxSpeeds += (meeting -> date)
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Suppose I have one long long int and want to take its bits and
In Java, suppose I have a String variable S, and I want to search
I want to write a java class that can be instantiated only 5 times
Of course most languages have library functions for this, but suppose I want to
Suppose that you have two huge files (several GB) that you want to concatenate
Suppose I have some application A with a database. Now I want to add
Suppose I want to open a file in an existing Emacs session using su
Suppose I want to implement a reasonably efficient 'keyword recognition algorithm', that is first
Suppose you want to make an async request in JavaScript, but you want to
Suppose I want to create a set of observers based on type. That is

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.