S-JIS[2007-06-11/2017-09-23] �ύX����

�x����}�~������@

Eclipse3.1�ȍ~�ł悭�x�����o��悤�ɂȂ����B
javac�R�}���h�Œ��ڃR���p�C������ƃf�t�H���g�ł͂��̎�̌x���͏o�Ȃ����Ajavac�̃I�v�V������-Xlint��t���ăR���p�C������� �����̌x�����o��悤�ɂȂ�B


�R���p�C���I�v�V�����ɂ��}�~

javac�̃I�v�V������-Xlint�ɂ���Čx����}�~�ł���B�iJDK1.5�ȍ~�j

�S�Ă̌x�����o����F

> javac -Xlint Test.java
> javac -Xlint:all Test.java

�S���x�����o���Ȃ���F

> javac Test.java
> javac -Xlint:none Test.java

�V���A���C�Y�̌x�������o����F

> javac -Xlint:serial Test.java

�V���A���C�Y�̌x����}�~�����F

> javac -Xlint:-serial Test.java

�V���A���C�Y�̌x�������}�~���A���̌x���͑S�ďo����F

> javac -Xlint:all,-serial Test.java

�A�m�e�[�V�����ɂ��}�~

JDK1.5���瓱�����ꂽ�A�m�e�[�V�����ɁA@SuppressWarnings�Ƃ������̂�����B
�����ɗ}�~�������x����������������w�肷�邱�Ƃɂ���āA�R���p�C���[�̊Y���̌x�����o���Ȃ��悤�ɂ��邱�Ƃ��o����B

@SuppressWarnings("�x����")
@SuppressWarnings({ "�x����1", "�x����2", �c })

�x�����͒P�Ȃ镶����Ȃ̂ŁA�萔�i�ϐ��j�Ŏw�肷�邱�Ƃ��o����B[2010-01-09]

static final String �萔�� = "�x����";
@SuppressWarnings(�萔��)

�����[�J���ϐ���static final�̕t���Ă��Ȃ��t�B�[���h�ł̓_��


@SuppressWarnings�ɂǂ������l���w��ł���̂��ɂ‚��ẮA�R���p�C���[�̎����i�R���p�C���[�̎�ށj�ɂ���ĈقȂ��B
�iJava����d�l��3��9.6.1.5�͂ɁA�R���p�C���[�ˑ������R���p�C���[�x���_�[�Ԃł̋��͂𐄏����Ă���Ə����Ă���j
��Eclipse�̌x��

Sun��javac�̏ꍇ�A �ujavac -X�v��javac�̃I�v�V�����̈ꗗ�������邪�A-Xlint�̍��ŏo�Ă�����̂����Ԃ��w��ł���B
�R���p�C���Ōx���ΏۂɈ����|����ƁA�u�`:�x��:[unchecked] �`�v�̂悤�ɁA�x���̕����񂪕\�������B[2008-05-23]
���ꂪ-Xlint�Ŏw�肷�ׂ�������ł���A@SuppressWarnings�Ɏw�肷�镶����ł����Ǝv���B
��Sun��javac�̔�W���I�v�V�����i-Xlint�j

Sun��javac�̌x��
�l JDK ���b�Z�[�W �x���̊T�v �� �X�V��
all 1.5 �@ �S�Ă̌x����}������B
@SuppressWarnings("all")
2008-05-23
cast 1.6 {1} �ւ̏璷�ȃL���X�g�ł� �s�v�ȃL���X�g���s���Ă���B
@SuppressWarnings("cast")
String s = (String)"abc";
2008-08-24
dep-ann 1.5 ��������Ȃ����ڂ� @Deprecated �Œ��߂��t�����Ă��܂���B Javadoc��@deprecated�^�O���t�����Ă��邪�A@Deprecated�A�m�e�[�V�������t�����Ă��Ȃ��B
���񐄏���JDK1.5�ȍ~�ł̓A�m�e�[�V�������g��
�i@SuppressWarnings��Javadoc�^�O�̑O�ɕt����Όx���͏����邯��ǂ��A�f����@Deprecated�A�m�e�[�V������t����ׂ��ł��傤�j
@SuppressWarnings("dep-ann")
/** @deprecated */
public void zzz(){ }
/** @deprecated */
@Deprecated
public void zzz(){ }
2008-10-25
deprecation 1.5 {1} �͐�������܂��� �񐄏��ideprecated�j�ɂȂ��Ă���N���X�E���\�b�h���g�p���Ă���B
@SuppressWarnings("deprecation")
Date d = new Date("2008/05/23");
2008-05-23
divzero 1.6 �[���ŏ��Z 0�ŏ��Z���Ă���B
@SuppressWarnings("divzero")
int n = 1 / 0;
2008-05-23
empty 1.6 if �ȍ~����̕��ł� if���ɂ����āAelse���������A�����𖞂������ꍇ�̏������󕶂̏ꍇ�i�‚܂�uif(����);�v�j�̌x���B
��u���b�N�̏ꍇ�i�uif(����){}�v�j��uif(����);else;�v���͌x���ɂȂ�Ȃ��B
for�Ewhile�Edo���̃��[�v���ΏۊO�B
@SuppressWarnings("empty")
void if1() {
  if(true);
}
2008-09-23
fallthrough 1.5 case �� fall-through ����”\��������܂� switch�ɂ����āA���炩�̏������L�q�������break�������A����case�i��default�j�ɏ������ڂ�ꍇ�B
@SuppressWarnings("fallthrough")
void test(int n) {
  switch(n){
    case 1:
      System.out.println("abc");
    default:
      break;
  }
}
2008-05-23
finally 1.5 finally �߂�����Ɋ����ł��܂��� finally�߂̒���return�܂���throw���Ă���B
�i���ʂ�try�y��catch�߂̒�����return/throw������̂ł���Afinally�ł������g����finally�ŕԂ����l���L���ɂȂ��̂ŁAtry/catch�ŕԂ����l�����ݏ�����Ă��܂��j
@SuppressWarnings("finally")
int test() {
  try {
  } finally {
    return 1;
  }
}
2007-06-12
overrides 1.6 {1}��{2}�� {3}��{4}���㏑�����܂��B; �I�[�o�[���C�h���Ă��郁�\�b�h�ɂ� {5} ������܂���B ��`�������\�b�h�i{1}�N���X��{2}�j���A�V�O�j�`���[�̈قȂ�e�N���X{3}�̃��\�b�h{4}�̃I�[�o�[���C�h�ɂȂ��Ă��܂��A�Ƃ����x���B
class Super {
  void method(String[] s){}
}
class Sub extends Super {
  @SuppressWarnings("overrides")
  void method(String... s){}
}
2008-08-24
path 1.5 �@ �R���p�C���I�v�V������classpath��sourcepath�Ńp�X�����݂��Ȃ��ꍇ�̌x���炵���B �@ 2008-05-23
serial 1.5 ���񉻉”\�ȃN���X {1} �ɂ́AserialVersionUID ����`����Ă��܂��� Serializable�C���^�[�t�F�[�X�����������ꍇ��serialVersionUID�Ƃ����萔���`���ׂ��Ȃ̂ɁA��`����Ă��Ȃ��B
@SuppressWarnings("serial")
class Test implements Serializable {
}
2007-06-11
unchecked 1.5 �@ ���`�F�b�N�ϊ��iunchecked conversion�j�ɑ΂���x���B �@ 2008-08-30
raw �^ {1} �̃����o�Ƃ��Ă� {2} �ւ̖������Ăяo���ł� ���̌^�i�W�F�l���N�X�j�Ō^�������w�肹���Ƀ��\�b�h���g���Ă���B
��raw�^
@SuppressWarnings("unchecked")
void test(List list) {
  list.add("abc");
}
2008-05-23
�������L���X�g�ł� �^�������g�����L���X�g�́A���s���ɂ͌^�`�F�b�N����Ȃ��B
�‚܂�E�̗Ⴞ�ƁA�uClass<Date> c = strClass();�v�ł̓R���p�C���G���[�ɂ��x���ɂ��Ȃ�Ȃ������s���ʂ�i���ۂɕԂ��Ă��Ă���̂�Class<String>�����A�`�F�b�N����Ȃ��j�B
�������uData d = c.newInstance();�v�ŃL���X�g�̗�O����������B
���R���N�V�����̓��I�^�ۏ�
@SuppressWarnings("unchecked")
static <T> Class<T> strClass() {
  return (Class<T>)"".getClass();
}
2008-08-21

@SuppressWarnings��t�����܂܌x���̌������������Ă��A@SuppressWarnings�͉����������Ȃ��B
�i�‚܂�x�����o�Ȃ��Ȃ����̂�@SuppressWarnings�͕s�v�ɂȂ����̂����A�����m��p�������i����ɑ΂��Čx�����o���Ă��ꂽ��͂��Ȃ�(���)�j�j

Eclipse�ł͕s�v��@SuppressWarnings�͌x���ɂȂ邱�Ƃ����邯�ǁB


@SafeVarargs

@java.lang.SafeVarargs�́AJDK1.7�œ������ꂽ�A�m�e�[�V�����B[2014-08-09]
���S�łȂ��•ϒ������ivar args�j�ɑ΂���x����}�~����B

�Ⴆ�Έȉ��̂悤�ȃR�[�f�B���O���s���ƁA�x�����o��B

	public void varArgsMethod(List<String>... args) {	// Type safety: Potential heap pollution via varargs parameter args
		System.out.println(args);
	}

�g�W�F�l���N�X�t���̃N���X�̉•ϒ������h�̏ꍇ�A���̂Ƃ��Ắg�W�F�l���N�X�t���N���X�̔z��h�ɂȂ邪�A�z��������Ȃ̂ŁA���S�łȂ����삪�i��낤�Ǝv���΁j�o���Ă��܂��B
�̂ŁA�����������x�����o�Ă���炵���B


���S�łȂ�����Ƃ����̂́A�Ⴆ�Έȉ��̂悤�ȃR�[�h�B

	public void varArgsMethod(List<String>... args) {
		Object[] objs = args;
		objs[0] = Arrays.asList(123); // List<Integer>

		List<String> list = args[0];
		String s = list.get(0); // ClassCastException
	}

�z��������Ȃ̂ŁAargs��Object�z��̕ϐ��ɑ���ł��Ă��܂��B
����ƁA�{���̌^�ƈقȂ�^�̒l�����ł��Ă��܂��B
����ƁA������g�����Ƃ����ӏ���ClassCastException���������Ă��܂��B

�܂��A�•ϒ������̕ϐ��̒��g������������R�[�f�B���O�Ȃ�āA�܂����Ȃ����낤����(���)


����������ŁA��L�̂悤�Ȍx�����o�Ă���ꍇ�A@SuppressWarnings("unchecked")�܂���@SafeVarargs�Ōx����}�~���邱�Ƃ��o����B

	@SafeVarargs
//	@SuppressWarnings("unchecked")
	public final void varArgsMethod(List<String>... args) {
		System.out.println(args);
	}

@SafeVarargs��t����ꍇ�A���̃��\�b�h��final��������static�ł���K�v������B
�i�I�[�o�[���C�h���ꂽ��܂ʼne�����y�ڂ��Ȃ����炾�낤���H�j
���̏����𖞂����Ă��Ȃ��ꍇ�A�u@SafeVarargs annotation cannot be applied to non-final instance method varArgsMethod�v�Ƃ����G���[�ɂȂ�B
�i�I�[�o�[���C�h�̉e���Ȃ�private���\�b�h�͖��Ȃ��͂������Aprivate���\�b�h�ł�final���t���Ă��Ȃ��ƃG���[�ɂȂ�j
��Java9�ŁAprivate���\�b�h�ɂ�@SafeVarargs��t������悤�ɂȂ����B[2017-09-23]

Eclipse�̏ꍇ�A��L�̌x���ɑ΂����N�C�b�N�t�B�b�N�X��@SafeVarargs��@SuppressWarnings��t���邱�Ƃ��o���邪�Afinal��������static���\�b�h�łȂ��ꍇ�́A�⊮����@SafeVarargs�͏o�Ă��Ȃ��B


@SuppressWarnings("unchecked")��@SafeVarargs�̈Ⴂ�́A@SafeVarargs���Ƃ��̃��\�b�h�̌Ăяo�����̌x���܂ŗ}�~����邱�ƁB

��L�̌x�����o�Ă��郁�\�b�h���Ăяo���R�[�f�B���O������ƁA�Ăяo�����ł��ȉ��̂悤�Ȍx�����o��B

	public void caller() {
		List<String> list = new ArrayList<>();
		varArgsMethod(list);	// Type safety: A generic array of List<String> is created for a varargs parameter
	}

�Ăяo�����\�b�h��@SafeVarargs���t���Ă���ƁA���̌x�����}�~�����B
�i�Ăяo�����\�b�h��@SuppressWarnings��t���Ă��邾�����ƁA������̌x���͗}�~����Ȃ��j


Java�ڎ��֖߂� / �V�@�\�֖߂� / �Z�p�����֖߂�
���[���̑��M��F�Ђ�����

�@

�@

�@

�@

�@

�@

�@

�@

�@

�@

�@

�@

�@

�@

�@

�@