103 votos

La diferencia entre objeto y objeto del caso

¿Hay alguna diferencia entre el caso objeto y objeto en scala?

68voto

axel22 Puntos 17400

Esta es una diferencia - casos objetos pueden serializarse. Objetos regulares no pueden:

scala> object A
defined module A

scala> case object B
defined module B

scala> import java.io._
import java.io._    

scala> val bos = new ByteArrayOutputStream                                            
bos: java.io.ByteArrayOutputStream =  

scala> val oos = new ObjectOutputStream(bos)                                          
oos: java.io.ObjectOutputStream = java.io.ObjectOutputStream@e7da60                   

scala> oos.writeObject(B)

scala> oos.writeObject(A)
java.io.NotSerializableException: A$

63voto

Dave Griffith Puntos 12923

Caso de que las clases se diferencian de las clases regulares en las que ellos obtienen:

  1. la coincidencia de patrones de apoyo
  2. por defecto implementaciones de equals y hashCode
  3. por defecto implementación de la serialización
  4. una bonita implementación predeterminada de toString, y
  5. la pequeña cantidad de funcionalidad que se obtiene de forma automática la herencia de scala.Product.

La coincidencia de patrones, equals y hashCode no importa mucho para los embarazos únicos (a menos que haga algo realmente degenerados), por lo que está bastante acaba de llegar a la serialización, una bonita toString, y de algunos de los métodos que probablemente no vuelva a usar.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X