Skip to Content
Scala Cookbook
book

Scala Cookbook

by Alvin Alexander
August 2013
Intermediate to advanced
720 pages
16h 23m
English
O'Reilly Media, Inc.
Content preview from Scala Cookbook

4.7. Preventing Getter and Setter Methods from Being Generated

Problem

When you define a class field as a var, Scala automatically generates getter and setter methods for the field, and defining a field as a val automatically generates a getter method, but you don’t want either a getter or setter.

Solution

Define the field with the private or private[this] access modifiers, as shown with the currentPrice field in this example:

class Stock {

  // getter and setter methods are generated
  var delayedPrice: Double = _

  // keep this field hidden from other classes
  private var currentPrice: Double = _
}

When you compile this class with scalac, and then disassemble it with javap, you’ll see this interface:

// Compiled from "Stock.scala"
public class Stock extends java.lang.Object implements scala.ScalaObject{
  public double delayedPrice();
  public void delayedPrice_$eq(double);
  public Stock();
}

This shows that getter and setter methods are defined for the delayedPrice field, and there are no getter or setter methods for the currentPrice field, as desired.

Discussion

Defining a field as private limits the field so it’s only available to instances of the same class, in this case instances of the Stock class. To be clear, any instance of a Stock class can access a private field of any other Stock instance.

As an example, the following code yields true when the Driver object is run, because the isHigher method in the Stock class can access the price field both (a) in its object, and (b) in the other Stock ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Scala Cookbook, 2nd Edition

Scala Cookbook, 2nd Edition

Alvin Alexander
Functional Programming in Scala video edition

Functional Programming in Scala video edition

Paul Chiusano, Runar Bjarnason
Functional Programming in Scala, Second Edition

Functional Programming in Scala, Second Edition

Runar Bjarnason, Michael Pilquist, Paul Chiusano

Publisher Resources

ISBN: 9781449340292Errata Page