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 8127829
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 6, 20262026-06-06T07:40:06+00:00 2026-06-06T07:40:06+00:00

How can I compare ref.WeakReference instance with another ref.WeakReference instance? The built-in equals method

  • 0

How can I compare ref.WeakReference instance with another ref.WeakReference instance?

The built-in equals method fails trivial check:

import ref.WeakReference
val st : String = "qwerty"
val r1 : WeakReference[String] = new WeakReference(st)
val r2 : WeakReference[String] = new WeakReference(st)
r1 == r2
res1: Boolean = false

It’s possible to use r1.get == r2.get but this method is unusable for comparing references to disposed objects: in both cases I’ll get None and None equals for None

Is it possible to actually compare weakreference?

  • 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-06-06T07:40:08+00:00Added an answer on June 6, 2026 at 7:40 am

    The problem is that there is no safe default behaviour when the object has been dereferenced; consequently, WeakReference doesn’t pretend to provide one. Wrapping it in an object that does implement the appropriate behaviour is trivial. If you like, you can even provide an implicit and let the type system ensure your reference is wrapped by the correct equals behaviour as required.

    So the short answer is: This is not provided to protect you from not thinking about it.

    EDIT (in response to comment):
    You are building an identity service. This maintains a mapping of entity<->identifier which must persist for the lifetime of all references to the entity. Most of the time the entity and the object representing the entity are the same thing, for these occasions use a WeakHashMap[Entity,Identifier] for the entity->identifier mapping and a WeakHashMap[Identifier,WeakReference[Entity]] for the identifier->entity mapping (if and only if required).

    If you really need the entity to live as long as references to its identifier, you can do this by maintaining a shadow identifier that can reincarnate the identifier when required, so using: WeakHashMap[Entity,Shadow[Identifier] and WeakHashMap[Identifier, Tuple2[Shadow[Identifier],Entity]] wrapped with appropriate reincarnation logic in Shadow watching the ReferenceQueues.

    Most of the time however, if the simple approach is inadequate, you have a need to track externalised identifiers, at that point things are both extremely tricky and extremely sensitive to the exact problem you are trying to solve.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

How I can compare two IP address? string ip1 = 123.123.123.123; string ip2 =
hi there i can compare people birthday in format YYYY-MM-DD with string (strcmp) functions.
is there a way l can compare two columns | fields in django like
I would like to know if there is anyway I can compare two columns
I have an IEnumerable, listOfOnes, and an IEnumerable, listOfTwos. Assuming that I can compare
Can I compare a commit to a branch and see if there is a
How can i compare two rows of datatable in QTP
How can I compare the items in two lists and create a new list
How can I compare multiple input field values and if there is a match
I know we can't compare 2 floating point values using ==. We can only

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.