복붙노트

[SCALA] 케이스와 오브젝트 차이

SCALA

케이스와 오브젝트 차이

스칼라의 경우 객체와 객체 사이에 어떤 차이가 있나요?

해결법

  1. ==============================

    1.그들이 얻을 수 있다는 점에서 케이스 클래스는 정규 수업과 다를 :

    그들이 얻을 수 있다는 점에서 케이스 클래스는 정규 수업과 다를 :

    당신은 꽤 많은 단지 점점 직렬화, 멋진 toString, 당신은 아마 지금까지 사용하지 않습니다 몇 가지 방법입니다 때문에, 패턴 매칭, 동일하고 (당신이 정말로 타락한 무언가를하지 않는 한) 해시 코드는 싱글에 대한 문제가 많이하지 않습니다.

  2. ==============================

    2.여기에 한 가지 차이점입니다 - 그들은 직렬화 할 수 있도록 경우 객체는, 직렬화 특성을 확장합니다. 기본적으로 일반 개체 수 없습니다 :

    여기에 한 가지 차이점입니다 - 그들은 직렬화 할 수 있도록 경우 객체는, 직렬화 특성을 확장합니다. 기본적으로 일반 개체 수 없습니다 :

    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$
    
  3. ==============================

    3.

    scala> object foo
    
    scala> case object foocase
    

    직렬화 차이 :

    scala> foo.asInstanceOf[Serializable]
    
    scala> foocase.asInstanceOf[Serializable]
    

    차이를 toString :

    scala> foo
    
    scala> foocase
    
  4. ==============================

    4.경우 암시 적 toString이 동일 방법의 구현와 함께,와 hashCode하지만 단순한 객체는하지 않는 객체. 간단한 객체 케이스를 만드는, 할 수없는이 Akka - 원격으로 메시지와 같은 매우 유용한 개체를하면서 경우 객체 직렬화 할 수 있습니다. 객체 키워드는 객체 직렬화 가능하게하기 전에 케이스 키워드를 추가.

    경우 암시 적 toString이 동일 방법의 구현와 함께,와 hashCode하지만 단순한 객체는하지 않는 객체. 간단한 객체 케이스를 만드는, 할 수없는이 Akka - 원격으로 메시지와 같은 매우 유용한 개체를하면서 경우 객체 직렬화 할 수 있습니다. 객체 키워드는 객체 직렬화 가능하게하기 전에 케이스 키워드를 추가.

  5. ==============================

    5.추가 상태 정보를 나타내는 모든 필드가없는 경우 그것은 경우 클래스와 클래스와 유사, 우리는 단지의 경우 클래스 대신 경우 객체를 사용합니다.

    추가 상태 정보를 나타내는 모든 필드가없는 경우 그것은 경우 클래스와 클래스와 유사, 우리는 단지의 경우 클래스 대신 경우 객체를 사용합니다.

  6. ==============================

    6.우리는 이전 객체와 "케이스 클래스"를 알고있다. 그러나 "경우 객체"는 객체와 케이스 클래스와 같은 상용구의 많은 싱글과 유사 모두 즉의 혼합이다. 유일한 차이점은 보일러 대신 클래스의 객체에 대해 수행된다는 점이다.

    우리는 이전 객체와 "케이스 클래스"를 알고있다. 그러나 "경우 객체"는 객체와 케이스 클래스와 같은 상용구의 많은 싱글과 유사 모두 즉의 혼합이다. 유일한 차이점은 보일러 대신 클래스의 객체에 대해 수행된다는 점이다.

    경우 개체는 사람 아래로 오지 않을 것이다 :

    방법을 취소합니다 적용, 적용합니다. 이 싱글이기 때문에 여기에는 복사 방법은 없습니다. 구조 동등 비교를 위해 어떤 방법이 없습니다. 뿐만 아니라 생성자 없습니다.

  7. from https://stackoverflow.com/questions/5270752/difference-between-case-object-and-object by cc-by-sa and MIT license