なので文字が含まれていても大丈夫なメソッドが知りたいのです。 無ければ自分で作ろうとおもうんですが、あったら馬鹿馬鹿しいのでお尋ねしました。 0187デフォルトの名無しさん2018/01/06(土) 17:09:48.97ID:+RoWEwO9 instanceofについて質問です。 出力結果がfalseになる場合と、(文が)コンパイルエラーになる場合の状況の違いが 分かりません。 どなたか回答お願いします。 0188デフォルトの名無しさん2018/01/06(土) 18:01:26.43ID:Prxp0ejb 日本語でおk 0189デフォルトの名無しさん2018/01/06(土) 18:10:34.80ID:KWkl+TbG>>186 ないよ 0190デフォルトの名無しさん2018/01/06(土) 18:17:05.61ID:KWkl+TbG>>187 class A {} class SubA extends A {} class B {}
public class Main { public static void main(String[] args) { A a = new A(); System.out.println(a instanceof B); System.out.println(a instanceof SubA); } }
何と何を比較するとfalseが出力されて、何と何を比較するとエラーになるのか 違いが分からなかったんで、その辺を教えて頂ければなと。 01921872018/01/06(土) 18:33:23.20ID:+RoWEwO9>>190 ありがとうございます。 それと、本によるとインターフェースが比較対象になっている時も出力はfalse になっているみたいですが、上のコードに、 interface C {} という定義が付け加えられた時、 a instanceof C は(コンパイルエラーではなく)falseを返すという理解でいいんですよね? 0193デフォルトの名無しさん2018/01/06(土) 18:48:07.60ID:KWkl+TbG>>192 ほんとだ。その理解でいいよ。 Aのサブクラスでインターフェースが実装されてるかもしれないから インターフェースへのキャストはコンパイル時にエラーにできないって理屈みたい。 0194デフォルトの名無しさん2018/01/06(土) 18:55:42.89ID:BwjYxRoc いかなる時もコンパイルエラーにしたくないなら Object にキャストしてから instanceof を使えば良い。 if ((Object) a instance of B) ... みたいに。 0195デフォルトの名無しさん2018/01/06(土) 18:56:51.55ID:BwjYxRoc あ、いかん。つい instance と of の間にスペース入れてしまった。instanceof ね。 0196デフォルトの名無しさん2018/01/06(土) 19:03:18.86ID:KWkl+TbG>>186 class C { private static final Pattern p = Pattern.compile("^(\\-?(0|[1-9]\\d*)(\\.\\d+)?((e|E)(\\+|\\-)?\\d+)?)");
public static int atoi(String s) { return toDouble(s).intValue(); }
public static double atof(String s) { return toDouble(s); }