java object boolean - オブジェクトをintにキャストする方法





8 Answers

オブジェクトがIntegerオブジェクトであると仮定すると、これを行うことができます:

int i = ((Integer) obj).intValue();

オブジェクトがIntegerオブジェクトでない場合は、型を検出し、その型に基づいて型を変換する必要があります。

変換 bigdecimal double

Javaのintにオブジェクトをキャストするにはどうすればよいですか?




@Deprecated
public static int toInt(Object obj)
{
    if (obj instanceof String)
    {
         return Integer.parseInt((String) obj);
    } else if (obj instanceof Number)
    {
         return ((Number) obj).intValue();
    } else
    {
         String toString = obj.toString();
         if (toString.matches("-?\d+"))
         {
              return Integer.parseInt(toString);
         }
         throw new IllegalArgumentException("This Object doesn't represent an int");
    }
}

ご覧のとおり、これは非常に効率的な方法ではありません。 あなたは、あなたが持っているオブジェクトの種類を確かめなければなりません。 その後、正しい方法でintに変換します。




回答:

int i = ( Integer ) yourObject;

あなたのオブジェクトが既に整数の場合は、スムーズに実行されます。 すなわち:

Object yourObject = 1;
//  cast here

または

Object yourObject = new Integer(1);
//  cast here

オブジェクトが他のものであれば、可能であればそれをintに変換する必要があります:

String s = "1";
Object yourObject = Integer.parseInt(s);
//  cast here

または

String s = "1";
Object yourObject = Integer.valueOf( s );
//  cast here



ObjectがもともとIntegerとしてインスタンス化されていた場合は、キャスト演算子(Subtype)を使用してObjectintダウンキャストすることができます。

Object object = new Integer(10);
int i = (Integer) object;

これは、 オートボクシング機能付きで少なくともJava 1.5を使用している場合にのみ機能します。それ以外の場合は、 iIntegerとして宣言してからintValue()を呼び出すintValue()があります。

しかし、最初はIntegerとして作成されていなかった場合、そのようにダウンキャストすることはできません。 その結果、メッセージ内の元のクラス名を持つClassCastExceptionします。 String#valueOf()取得されたオブジェクトのtoString()表現が、構文上有効な整数(必要な場合は数字のみString#valueOf()示している場合、 Integer#valueOf()またはnew Integer()このため。

Object object = "10";
int i = Integer.valueOf(String.valueOf(object));

参照:




できません。 intはオブジェクトではなく、プリミティブ型です。 それをIntegerにキャストしてintを取得できます。

 Integer i = (Integer) o; // throws ClassCastException if o.getClass() != Integer.class

 int num = i; //Java 1.5 or higher



Stringをintにキャストすることを意味する場合は、 Integer.valueOf("123")使用しInteger.valueOf("123")

int値を持たないので、他のほとんどのオブジェクトをintにキャストすることはできません。 たとえば、XmlDocumentにint値がありません。




int[] getAdminIDList(String tableName, String attributeName, int value) throws SQLException {
    ArrayList list = null;
    Statement statement = conn.createStatement();
    ResultSet result = statement.executeQuery("SELECT admin_id FROM " + tableName + " WHERE " + attributeName + "='" + value + "'");
    while (result.next()) {
        list.add(result.getInt(1));
    }
    statement.close();
    int id[] = new int[list.size()];
    for (int i = 0; i < id.length; i++) {
        try {
            id[i] = ((Integer) list.get(i)).intValue();
        } catch(NullPointerException ne) {
        } catch(ClassCastException ch) {}
    }
    return id;
}
// enter code here

このコードは、なぜArrayListが重要で、なぜそれを使うのかを示しています。 Objectからintをキャストするだけです。 その役に立つかもしれない。




例のオブジェクト変数。 hastaId

Object hastaId = session.getAttribute("hastaID");

例については、オブジェクトをint、 hastaIDキャストする

int hastaID=Integer.parseInt(String.valueOf(hastaId));



Related