일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- RabbitMQ
- confluent
- play framework
- kafkastream
- scala
- scala 2.10
- 카프카
- kafkastreams
- reactive
- Logstash
- kafka interactive query
- statestore
- spring-cloud-stream
- Elk
- schema registry
- Spring
- enablekafkastreams
- 플레이 프레임워크
- coursera
- gradle
- 한빛미디어
- Slick
- avo
- aws
- springboot
- spring-batch
- kafka streams
- spring-kafka
- Elasticsearch
- Kafka
- Today
- Total
b
case class 2번째 이야기. 본문
http://korean-nerdism.blogspot.kr/2012/12/scala-pattern-matching-case-class.html?spref=tw 를 보고 '아차' 놓친게 있나 보다.
CaseClassExample.scala
case class ClassExample(message: String)
ClassExample.scala
class ClassExample(message: String)
두개의 파일을 작성하고, scalac 로 class파일을 생성하였다.
결과는 총 3개의 class파일이 나온다. CaseClassExample$ 가 컴패니언 클래스의 output으로 보인다. (마치 자바의 inner class처럼 $를 달고
1,481 CaseClassExample$.class
3,901 CaseClassExample.class
642 ClassExample.class
javap의 결과는
C:\MyProject>javap ClassExample CaseClassExample$ CaseClassExample
Compiled from "ClassExample.scala"
public class ClassExample extends java.lang.Object{
public ClassExample(java.lang.String);
}
Compiled from "CaseClassExample.scala"
public final class CaseClassExample$ extends scala.runtime.AbstractFunction1 implements scala.Serializable{
public static final CaseClassExample$ MODULE$;
public static {};
public final java.lang.String toString();
public CaseClassExample apply(java.lang.String);
public scala.Option unapply(CaseClassExample);
public java.lang.Object apply(java.lang.Object);
}
Compiled from "CaseClassExample.scala"
public class CaseClassExample extends java.lang.Object implements scala.Product,scala.Serializable{
public static scala.Function1 andThen(scala.Function1);
public static scala.Function1 compose(scala.Function1);
public java.lang.String message();
public CaseClassExample copy(java.lang.String);
public java.lang.String copy$default$1();
public java.lang.String productPrefix();
public int productArity();
public java.lang.Object productElement(int);
public scala.collection.Iterator productIterator();
public boolean canEqual(java.lang.Object);
public java.lang.String _1();
public int hashCode();
public java.lang.String toString();
public boolean equals(java.lang.Object);
public CaseClassExample(java.lang.String);
}
companion class file 에서는 apply, unapply 가 보이고 original class file 에서는 copy, andThen등의 몇가지 메소드가 추가적으로 보임을 알 수 있다.
'language > scala' 카테고리의 다른 글
Functional Programming Principles in Scala 끝! (1) | 2013.06.04 |
---|---|
Scala Tuple (0) | 2013.03.12 |
2.10을 위한 scala-ide plugin 재설치 (0) | 2013.03.12 |
Play framework IDE, Scala Build Sublime (0) | 2013.02.06 |
case class (0) | 2012.07.19 |