Java��Generics�����֗���Scala�̌^�p�����[�^�F�X�P�[���u���Ŋ֐��^�ŃI�u�W�F�N�g�w����Scala����i8�j�i1/2 �y�[�W�j

Scala�̓������Љ�A��{�\����֐��A�N���X�ȂǁAScala�̊�{�I�ȋ@�\�ɂ‚��ĉ���������A��

» 2012�N08��09�� 00��00�� ���J
[�����C���C�N���X���\�b�h�������]

�O��̂����炢�ƍ���̓��e

�@�O��̋L���uScala�̃g���C�g�Ńv���O���}���~�b�N�X�C�����Ă����v�ł́AScala�̏d�v�ȋ@�\�ł����g���C�g�̊�{�I�Ȏg��������n�܂�A�����̃g���C�g��ςݏd�˂��ꍇ�ɂǂ̂悤�ȏ��Ԃ����`������邩�ɂ‚��Ă��Љ�܂����B������^�̃p�����[�^���ɂ‚��ďЉ�܂��B

�@��1��L���ł́AScala�W����REPL��Scala IDE�œ�����m�F���Ă݂܂����B����{�L���̃T���v���R�[�h�́A�ǂ���Ŋm�F���Ă����͂���܂��񂪁A�Θb�I�Ɏ��s�ł��A1�����ƂɃR�[�h�̌��ʂ��������ĕ֗��Ȃ̂ŁA��{�I�ɂ�REPL��p���Đ������Ă����܂��B

�@Scala IDE���g�p����ꍇ�A��1��L���́wScala IDE for Eclipse�ŁuHello Scala�I�v�x���Q�Ƃ��ăv���W�F�N�g���쐬���Ď��s���Ă��������BREPL���g�p����ꍇ�́A�R���\�[�����scala�R�}���h�����s���AREPL���N�����Ă��������B

Scala�ɂ�����u�^�̃p�����[�^���v�Ƃ�

�@��ʓI�ɂ��R���X�g���N�^�����\�b�h���g�p����Ƃ��A�������g�p���ăp�����[�^�����܂��B�^�̃p�����[�^���Ƃ́A����Ɠ����悤���N���X�⃁�\�b�h�ȂǂŎg�p����^���̂��̂��p�����[�^�����čė��p�������߂�@�\�ł��B

�����̋@�\��Java�ł́uGenerics�i�W�F�l���b�N�^���̌^�j�v�ƌĂ΂�Ă���AJDK 1.5����g���܂��BJava�ł�Generics�ɂ‚��Ēm�肽�����́A�L���u�L���[�\����Java�Ŏ������ăW�F�l���b�N�^�𗝉������v�Ȃǂ��������������B

�^�p�����[�^�̊�{�I�Ȏg����

�@�^�p�����[�^���g���Ă݂܂��傤�B�R���N�V�����ł悭�g�p����List�͌^�p�����[�^���w�肵�AString�^�⎩���Œ�`�����^�ȂǁA���낢��Ȍ^���w��ł��܂��BREPL��String�^���i�[����List�^�ϐ����`���܂��B

scala> val sList = List[String]("a","b","c")
sList: List[java.lang.String] = List(a, b, c)

�@�uList[�^��](�����l)�v�Ƃ��āAList�̌^�p�����[�^���w�肵�Ă��܂��B�����ł͌^�p�����[�^��String�𖾎��I�Ɏw�肵�Ă��܂����A�w�肵�Ȃ��ꍇ�ł��^���_�ɂ��List[String]�Ƃ��Ĕ��f����܂��B

scala> val sList = List("a","b","c")
sList: List[java.lang.String] = List(a, b, c)

�@List�̐擪�����o���ƁA������String�^�Ƃ��Ď擾�ł��܂��B

scala> sList.head
res2: java.lang.String = a

[Any]�^�Ɓu�^���S�v

�@�������A�^�p�����[�^�����w�肵�Ȃ��ƁA�����String�ȊO�̗v�f��n�����Ƃ����ꍇ��List[Any]�^�Ƃ��Ē�`����Ă��܂��܂��B

scala> val sList = List("a","b",1)
sList: List[Any] = List(a, b, 1)

�@String�^�ȊO�̌^��z�肵�Ă��Ȃ���΁A�����炭sList���g�p������̃��\�b�h�Ăяo���ŃR���p�C���G���[���������ĊԈႢ�ɋC�t�����ƂɂȂ�ł��傤�B�����ƒ�`���Ɍ^�p�����[�^��String�^�Ƃ��Ďw�肵���ꍇ�AString�^�ȊO�̗v�f��n�����Ƃ���ƁA�R���p�C�����ɃG���[�ɂȂ�܂��B

scala> val sList = List[String]("a","b",1)
<console>:7: error: type mismatch;
 found   : Int(1)
 required: String
       val sList = List[String]("a","b",1)

�@���̂悤�ɁA�^�p�����[�^��K�؂Ɏg���΁AScala��List�́u�^���S�i������^�̏�Ԃ������N����������ϊ��������Ȃ���ԁj�v�ɑ���ł��܂��B

�⑫�@Scala�ł̌^�̒��ו��ƃL���X�g

���L�̂悤�ɁAList���^�p�����[�^���w�肹���A�����l��String�^��Int�^���i�[�����ꍇ�AList[Any]�Œ�`����܂��B

scala> val list = List("a","b",1)
list: List[Any] = List(a, b, 1)

���̏ꍇ�A�v�f��C�ӂ̌^�Ŏ��o�������Ƃ��́A�ǂ�����΂����̂ł��傤���BJava�̏ꍇ�Ainstanceof���Z�q�ł��̕ϐ��̎��ۂ̌^�𒲂ׂ���A�i�^�j�ϐ��Ƃ��邱�Ƃ��L���X�g�ł��܂��B

//Java�̏ꍇ
Object o = new String("hello");
if(o instanceof String) {
	System.out.println((String)o);
}

Scala�̏ꍇ�AAny������isInstanceOf���\�b�h���g�p���邱�ƂŁA�ϐ��̎��ۂ̌^�𒲂ׂ��܂��B

scala> list(0).isInstanceOf[Int]
res16: Boolean = false
 
scala> list(0).isInstanceOf[String]
res17: Boolean = true

�uisInstanceOf[�^��]�v�Ƃ��āA���̌^���������Ă����true�A�����łȂ����false���Ԃ�܂��B�܂��A�L���X�g��asInstanceOf���\�b�h�ʼn”\�ł��B

scala> list(0).asInstanceOf[String]
res18: String = a

�������A�����̃��\�b�h�͎��ۂ��܂�g���܂���B�^�̊m�F��L���X�g���������ꍇ�A�A�ڑ�4��ʼn�������u�p�^�[���}�b�`�v���g���������V���v���ɋL�q�ł��邩��ł��B�܂��́A�p�^�[���}�b�`���������Ă݂Ă��������B


�^�p�����[�^���g�p�����N���X�̒�`

�@�^�p�����[�^�̎g�����͕��������̂ŁA���͌^�p�����[�^���g�p�����N���X���`���Ă݂܂��傤�B1�‚̌^�p�����[�^�uA�v�����A�uMySample�v�Ƃ����N���X���`���Ă݂܂��B

class MySample[A]{
    var param:A = _
    def get:A = param
    def set(param:A) = this.param = param
}

�@�^�p�����[�^�́A�N���X���ƃR���X�g���N�^�����̊ԂɌ^�p�����[�^���̎w���lj����܂��B��L�̗�ł����ƁAMySample�N���X�́uA�v�Ƃ������炩�̌^�����Ƃ����Ӗ��ł��B�^�p�����[�^�̓J���}��؂�ŁA�����‚ł��L�q�”\�ł��B

�@�Ȃ��AScala�ɂ����Č^�p�����[�^�́AA���珇�Ԃɖ��O��t���邱�Ƃ����K�ƂȂ��Ă���悤�ł��B

�^�p�����[�^���g�����N���X�̃C���X�^���X��

�@�ł�MySample�N���X���C���X�^���X�����Ďg�p���Ă݂܂��傤�B�C���X�^���X�����ɁA[]���g�p���Č^�p�����[�^�Ɏ��ۂ̌^���w�肵�܂��B���L�T���v���ł�MySample�̌^�p�����[�^A�ɑ΂���String���w�肵�Ă��܂��B

scala> val x = new MySample[String]
x: MySample[String] = MySample@c595bcd
 
scala> x.set("hello")
 
scala> x.get
res5: String = hello

�@�����MySample��param�t�B�[���h��String�^�Ƃ��Ďg����悤�ɂȂ�܂��Bset���\�b�h��String�^���󂯎��悤�ɂȂ�Aget���\�b�h��String�^��Ԃ��悤�ɂȂ�܂��B

�^�p�����[�^��2�Ž��N���X��new�ŃC���X�^���X������ꍇ

�@�^�p�����[�^��2�Žw�肷��N���X���unew�v�ŃC���X�^���X����ꍇ�A�����ς�������������ł��܂��B�Ⴆ�΁A�^�p�����[�^��2�Ž��uOR�v�Ƃ����N���X���������ꍇ�ɂ́A�N���X���𒆉��ɏ����Ă��̑O��Ɍ^�p�����[�^�������܂��B

class Collect
class Error
class OR[L,R]
scala>  new (Collect OR Error)
res0: OR[Collect,Error] = OR@4ee00c09

�@OR�Ƃ����g���Z�q�h���g���Ă���悤�ɂ������܂����A���ۂɂ́uOR�v�N���X���C���X�^���X�����Ă��܂��B

�^�p�����[�^���g�p�������\�b�h�̒�`

�@���ɁA���\�b�h�ɑ΂��Č^�p�����[�^���w�肵�Ă݂܂��傤�B�N���X��g���C�g�Ɠ������A���\�b�h���^���p�����[�^���ł��܂��B���\�b�h�̏ꍇ�A���\�b�h���ƈ����̊ԂɌ^�p�����[�^���w�肵�܂��B

�@���\�b�h�̏ꍇ�A���\�b�h���ƈ����̊ԂɌ^�p�����[�^���w�肵�܂��B�\���͉��L�̂悤�ɂȂ��Ă��܂��B

def �֐���[A](����):�߂�l = �֐��{��

�@�ł́A�^�p�����[�^��1�Ž���֐�func���`���Ă݂܂��B���̊֐��͈����Ƃ��Ď󂯎�����l���A���̂܂ܕԂ������ł��B�܂��A�����̌^�͌^�p�����[�^�Ƃ��Ďw��ł��܂��B

scala> def func[A](arg:A):A = arg
func: [A](arg: A)A

�@�ł́A�֐�func���g���Ă݂܂��傤�B���\�b�h���ĂԂƂ��Ɍ^�p�����[�^���w�肵�Ȃ��Ă��A�^���_�ɂ�肤�܂����삵�Ă���܂��B

scala> func("hello") //�^���_�ɂ��^�p�����[�^��String�Ƃ��ĉ��߂����
res1: java.lang.String = hello

�@��L�̏ꍇ�Afunc[String]("hello")�ƋL�q�������ƂƓ����Ӗ��ɂȂ�܂��B

�@�Ȃ��A�^�p�����[�^�𖾎��I�Ɏw�肷��ɂ́A�����̑O��[]�Ō^���L�q���܂��B

scala> func[Int](10)
res2: Int = 10

�@�����ł͌^�p�����[�^���g�p�����N���X�⃁�\�b�h���`���Ďg���Ă݂܂����B�^�p�����[�^�����܂��g�p���邱�ƂŔėp�����オ������A�R���N�V������֗��Ɉ����邱�Ƃ�������܂��B���y�[�W�ł͌^�p�����[�^�ɐ�������������@�ɂ‚��ďЉ�܂��B

�@�@�@�@�@�@ 1|2 ���̃y�[�W��

Copyright © ITmedia, Inc. All Rights Reserved.

'; if( !this.isSubscription ) { this.insertTarget = document.querySelector('#cmsBody .subscription') || document.querySelector('#cmsBody .inner'); } }; BodyAdIMSWithCCE.prototype = Object.create(BodyAdContent.prototype); BodyAdIMSWithCCE.prototype.activate = function () { refreshGam('InArtSpecialLink'); } // global reference window.itm = itm; //entry point BodyAdEventBase.polyfill(); const bodyAdManager = BodyAdManager.getInstance(); bodyAdManager.addEventListener(BodyAdManager.EVENTS.READY, function (ev) { bodyAdManager.loadAdvertise(); }); bodyAdManager.init(); })();
�X�|���T�[����̂��m�点PR

���ڂ̃e�[�}

4AI by IT - AIAAA
Microsoft  WindowsőO2025
AI for GWjAO
[R[h^m[R[h Zg by IT - ITGWjArWlX̒SŊ􂷂gD
Cloud Native Central by IT - XP[uȔ\͂gD
�V�X�e���J���m�E�n�E �y�����i�r�zPR
���Ȃ��ɂ������߂̋L��PR

RSS�ɂ‚���

�A�C�e�B���f�B�AID�ɂ‚���

���[���}�K�W���o�^

��IT�̃��[���}�K�W���́A �������A���ׂĖ����ł��B���Ѓ��[���}�K�W�������w�ǂ��������B