• ベストアンサー

javaのキャストについて

javaでint型配列をInteger型配列にキャストする方法ってありますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • root139
  • ベストアンサー率60% (488/809)
回答No.2

キャストではないですが、 Apache Commons Lang の ArrayUtils.toObject(int[]) を使う手も有ります。 http://www.jajakarta.org/commons/lang-2.0/ja/withPrimary/org/apache/commons/lang/ArrayUtils.html 例) ------------------------------------------ int[] ints = new int[] { 1, 2, 3}; Integer[] objInts = ArrayUtils.toObject(ints); ----------------------------------------------

参考URL:
http://commons.apache.org/lang/
全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#147388
noname#147388
回答No.1

int と Integer は関連性はあるが int[] と Integer[] は関連性がないため キャストができなかったはずです。 おとなしく詰め替えるか、 型をあわせましょう。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Java NullPointerException

    簡単な配列を作っているのですが、現在のコードについてどうしても以下のエラーが解決できません。 java.lang.NullPointerException 今作っているコードは ArrayList<Integer> intList = new intList<Integer>(); intList.add(1); といういうようなシンプルなものです。 ArrayList<Integer>ではなく、int[]にしてもダメでした。(正直この2つの違いもよく分かっていません。) 解決方法(+よろしければ違いの説明も)を教えて頂ければと思います。 宜しくお願い致します。

    • ベストアンサー
    • Java
  • javaのGenericsについて質問です。

    javaのGenericsについて質問です。 現在、javaを勉強中です。javaのGenericsについて質問があります。 「JavaにおけるGenericsでは、クラスの型パラメータには正式には オブジェクト型しか指定することができない」とあります。 つまり、intはIntegerと記述するということですが、 配列の場合はどうなるのですか? 例えば  Vector<Integer[]> とするとエラーになってしまいます。 Vector<int[]> にすると上手くいっているようなのですが、これでよいのでしょうか? もしこれでよいのであれば、Genericsの仕組みはどうなっているのでしょうか? 的外れな質問かもしれませんが、なにぶん初心者ゆえ、ご教授のほど、宜しくお願い申し上げます。

    • ベストアンサー
    • Java
  • javaの不思議

    C言語をたしなむ程度にやっているものです。 Javaを勉強していたのですが、不思議だなと思ったので質問させてください。 Integer value = new Integer(30); value.doubleValue() // <- double型に変換している このプログラムだとvalueはintなのにあらかじめdoubleに変換できることを想定しています。 C言語の癖なのかしらないですが、型変換をするならクラスメソッドではなくキャストするか、 メソッドに投げる(Integer.toString←stringにする例ですが)。 この2つの方法が自然な型変換だと思うのですが、変でしょうか?

    • ベストアンサー
    • Java
  • ポインタのキャスト方法

    こんにちは。 C言語でポインタキャストしているところがどうしてもうまくいきません。 以下のような要素数10個の型配列を指すポインタを キャストしたいのですがこれだと警告文がでてしまうので きちんとキャストしたいのですが、 どうしてもうまくいきませんでした。。。 1 short int *ibuf; 2 short int (*ibuf_tmp)[10]; 3 ibuf_tmp=ibuf; ※←ここです 宜しくお願いします。

  • Java 可変長引数と優先度

    Java 可変長引数と優先度  こんにちは。c#初心者兼、java始めました です。  可変長引数の場合のオーバーロードの優先度について困っています(質問と言うより半分愚痴です)。  javaにも可変長引数ってありますよね。(ジェネリックの弱さにイライラしていたけれど)「javaも捨てたものじゃない」と感心しながら使っていると、いきなりコンパイルエラー。  sampleMethod(10, 20); と書いている部分でエラーが発生していました。  自分のメソッド定義を確認しみると、  void sampleMethod(int...);  void sampleMethod(Object...);  の2種類のオーバーロードがあり、ambiguousなため判別不能らしいです。    確かに、AutoBoxingされれば、int...だけでなく、Object...にもマッチしますが、どう考えてもBoxingしない方が優先度が高いはずです。というか、高く設定されるべきです。  個人的に基準にしているc#ではこのようなことは起きませんでした。  (あ、やっぱり捨てたものかもしれない ←心変わり早す(ry )    試しにc#でInteger型のクラスを作り、(実際はタブーですが)暗黙のキャストを双方向でオーバーロードして実験してみました。   public class Integer // ここからc# {   private int _value;   //----------------------------   public Integer(int value) { _value = value; }   //----------------------------   // Integer → int の暗黙の型変換   public static implicit operator int(Integer value)   { return value._value; }   // int → Integer の暗黙の型変換   public static implicit operator Integer(int value)   { return new Integer(value); }   //----------------------------   // javaの sampleMethod(int... values)に相当   public static void SampleMethod(params int[] values) { }   // javaの sampleMethod(Object... values)に相当   public static void SampleMethod(params Object[] values) { } }  そして、Integer.SampleMethod(10, 20); と書いてみると……問題……なし。  ちゃんと、SampleMethod(param int[] values)が選ばれていました。  つまり、(個人的には)java(コンパイラ)の方が不可解な動きをしているのです。  sampleMethod(int, int)とsampleMethod(Object, Object)があるときは問題ないので、可変長引数のときだけambiguousになるようです。  「それなら」と思い、sampleMethod(int, int...)とsampleMethod(Object, Object...)を作ってみましたが、やはりエラーが出ます。  何か良い解決策はあるでしょうか?  可変長じゃない引数のオーバーロードを大量に作ることと、片方の可変長をやめること以外でアドバイスをお願いします。  もしくは、「個人的には~だから、パクリのc#よりjavaの方が動きが正しいぞ!」という方がいらっしゃいましたら、ご意見ください。

  • java

    こんにちは。 javaの初心者で、現在、javaのプログラムを作成中ですが、テキストフェイルのデータの BufferedReaderで読み込んだあとどうやって分割し、int型配列に格納しますか? 先輩たち よろしく お願いいたします。

  • 複雑なキャスト

    "(int の要素数3の配列) へのポインタ" を意味するキャストはどのような書き方になりますか? (int*[3]) かと思ったのですが、コンパイルエラーになります。 参考までに、ソースをのせておきます。 pai や ai のようなよくわからない変数名は、 型が複雑なためそこだけハンガリアン記法っぽく書いています。 #include<stdio.h> // func は int の要素数3の配列 {0, 1, 2} の中の n 番目の要素を返す int func(int (*pai)[3], int n){ // pai means 'p'ointer to 'a'rray of 'i'nt. return (*pai)[n]; } int main(){ int ai[] = {0, 1, 2}; // ai means array of int. int i = func(&ai, 1); // 同じことを、先頭要素のポインタを経由してやりたい int *pi = &ai[0]; // pi means pointer to int. int j = func((int*[3])pi, 1); // "(int の要素数3の配列) へのポインタ" を // 意味するキャストがしたい // (int*[3]) ではエラーになる printf("Of course %d = %d.\n", i, j); return 0; }

  • Javaの配列の宣言方法のメリット?

    1週間ほど前からJavaを独学している者です。 C言語をその前からやっていて、初心者レベル程度ならわかると思います。 そこで、質問です。 C言語の配列宣言:   int array[10]; Javaの配列宣言:   int array[] = new int[10]; 二つの言語とも、要素10個のarray1次元配列変数を宣言していると思います。 C言語の書き方はシンプルなので、納得がいきますが、Javaの方はどうしてこの形で宣言をするのかわかりません。(自分が言語製作者ならシンプルな書き方を採用します) だから、このような宣言の方法をとるということは何か理由があるのだと思います。 自分が思うところ、JavaはC言語より、柔軟で多機能だとおもうので、その影響で汎用性をますために、 長くなっているのかな~?と思っています。 こんごJavaの学習を進めていくと、例えば、   int array[] = new double[10]; //←エラーになりました みたいに型のちがう、宣言が出てきたりするのでしょうか? ちらっと、学習に使っている本をみたところ、動的配列の作成は別の操作で実現しているようなので、 「動的とは関係ないのかな?」と思っています。 長くなりましたが、Javaの配列宣言のメリットを教えてください。

    • ベストアンサー
    • Java
  • Javaについてすこし教えてください。Math.random()につい

    Javaについてすこし教えてください。Math.random()についてです。 例えばint iに0から51までのランダムな数を入れたいときはとりあえずint型にキャストするとして i=(int)(Math.random()←ここからどういった感じにすれば良いのでしょうか? そもそもMath.randomの使い方がいまいち分かりません。 教えてください><

    • ベストアンサー
    • Java
  • Stringの値で型キャストしたい(Java)

    最近OKWaveでお世話になっています。 表現がおかしいかもしれませんが、Stringの変数の値を使って、型キャストしたいです。 様々なオブジェクトが入る配列(Vector)を使用しているため、VectorをObject型にして使用しています。 配列のある要素をget()したのち、getClass().getSimpleName()でクラス名を取得し、そのクラス名を、 Object obj = array.get(i); String name = obj.getClass().getSimpleName(); if(name.equal("Integer")) {  method((Integer)obj);   ・   ・   ・ のような形で、場合分けして、メソッドを呼び出しています。 ですが、この方法だと、条件分岐が増えて、見づらいです。 そこで、クラス名を取得したnameをうまく使ってobjを型キャストしたいです。 これを解決させる方法もしくはヒントを教えてください!

    • ベストアンサー
    • Java
このQ&Aのポイント
  • 大学改革支援・学位授与機構は上智大の法学院を司法試験の合格状況の低迷などで「不適合」としました。
  • 「不適合」となると大学にはいくつかのデメリットがあります。
  • 例えば、大学に対する信頼が低下し、学生の入学志願者数が減少する可能性があります。また、教育の質や研究への注力度が問われることもあります。
回答を見る