标签: classcastexception

为什么我在这里得到ClassCastException?

我正在创建一个Android应用程序,我正在尝试使用PreferenceActivity.

当它到达这一行时,我收到java.lang.ClassCastException:java.lang.String错误return PreferenceManager.getDefaultSharedPreferences(context).getInt(USER_TERM, USER_TERM_DEF);

我认为这可能是因为我没有正确地将它从EditText框中的字符串值转换为我需要的int,但我无法弄清楚如何解决这个问题,或者甚至是原因?我很沮丧.

这是我的偏好活动类:

public class UserPrefs extends PreferenceActivity {
//option names and default vals
private static final String USER_TERM = "term_length";
private static final String USER_YEAR = "year_length";
private static final int USER_TERM_DEF = 12;
private static final int USER_YEAR_DEF = 34;

@Override 
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.preferences); 
}

public static int getTermLength(Context context){
    try{
    return PreferenceManager.getDefaultSharedPreferences(context).getInt(USER_TERM, USER_TERM_DEF);
    }catch (ClassCastException e){Log.v("getTermLength", "error::: " + e); }
    //return 1;//temporary, needed to catch the error …
Run Code Online (Sandbox Code Playgroud)

java android preferences classcastexception preferenceactivity

2
推荐指数
1
解决办法
2119
查看次数

java.lang.ClassCastException,DeepNodeListImpl无法强制转换

这是我的代码:

 public void Login() {  
    try{
        DocumentBuilderFactory builderfactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = builderfactory.newDocumentBuilder();

        File path = new File("src/dataPengguna/dataPengguna.xml");

        Document doc = db.parse(path);

        Element pengguna = (Element) doc.getElementsByTagName("pengguna");

        NodeList list = pengguna.getElementsByTagName("user");

        for (int i = 0; i < list.getLength(); i++) {
            Element user =  (Element) list.item(i);
            Node username =   user.getElementsByTagName("username").item(i);
            Node password =   user.getElementsByTagName("password").item(i);

            if(loginuser.getText().equals(username.getTextContent()) 
               && loginpass.getText().equals(password.getTextContent())){ 
                JOptionPane.showMessageDialog(rootPane, "welcome");
            }
        }
    }catch(Exception e){
      e.printStackTrace();

    }
    }
Run Code Online (Sandbox Code Playgroud)

这是我的xml:

     <?xml version="1.0" encoding="UTF-8"?>
     <pengguna>

         <user>
         <nama>septian</nama>
         <username>septiansykes</username>
         <password>1234</password>
         <status>belumpinjam</status> 
         </user>    

         <user>
         <nama>koko</nama> …
Run Code Online (Sandbox Code Playgroud)

java xml nodelist classcastexception

2
推荐指数
1
解决办法
9582
查看次数

Android.widget.RelativeLayout无法强制转换为android.widget.ImageView

我正在尝试获取XML布局文件中定义的ImageView实例:

<RelativeLayout
    android:id="@+id/visual_compass_container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/output_container" >

    <ImageView
        android:id="@+id/visual_compass"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:contentDescription="Compass"
        android:scaleType="fitStart"
        android:src="@drawable/compass_rose" />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

但我总是得到运行时错误:

... java.lang.ClassCastException: android.widget.RelativeLayout cannot be
cast to android.widget.ImageView ... at net.example.MainActivity.onCreate
(MainActivity.java:57)
Run Code Online (Sandbox Code Playgroud)

线"57"是那一个:

compassView = (ImageView) findViewById(R.id.visual_compass);
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚为什么会抛出这个错误; 我没有看到这段代码的问题.还有谁知道吗?

谢谢Felix D.

java android runtime-error classcastexception android-layout

2
推荐指数
1
解决办法
1万
查看次数

尝试为类的实例设置成员变量时,Java ArrayList类强制转换异常

嗨,我在过去的3个小时里一直坚持这个错误,当有人弄清楚什么是错的时候,我可能会打错了.我真的只是想将ArrayList设置为我的TeacherAccount类的实例.在运行最简单的测试时,我一直得到以下错误,我认为我可以在下面.

这是TeacherAccount类

package com.studentOrganizer;


import java.util.List;

public class TeacherAccount {

    private String username;
    private String password;
    private List<String> students;

    public TeacherAccount(){
        username=null;
        password=null;
        students = null;

    }
    public TeacherAccount(String username, String password,List<String> students){
        this.username = username;
        this.password = password;
        this.students = students;
    }

    public void setUsername(String username){
        this.username = username;
    }

    public void setPassword(String password){
        this.password = password;
    }

    public void setStudents(List<String> students){
        this.students = students;  
    }

    public String getUsername(){
        return username;
    }

    public String getPassword(){
        return password;
    }

    public …
Run Code Online (Sandbox Code Playgroud)

java arraylist classcastexception

2
推荐指数
1
解决办法
1163
查看次数

Android java.lang.ClassCastException:android.widget.RelativeLayout无法强制转换为android.widget.EditText

我在Android中遇到以下异常,点击按钮将我从一个活动带到另一个活动(我是Android开发的新手,所以它可能不是最明亮的问题):

java.lang.ClassCastException:android.widget.RelativeLayout无法强制转换为android.widget.EditText

我已经尝试过多次清理项目了,我已经尝试过Android Tools中的Fix Project Properties选项,我已经检查了我的xml是否有错误,但我似乎无法弄清楚这一点.我必须提一下,该按钮运行良好一段时间,直到发生此异常.

这是我的xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/editCustomerPhone"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/background_dark"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".CustomerInfoActivity" >

<FrameLayout
    android:id="@+id/frameLayout1"
    android:layout_width="wrap_content"
    android:layout_height="250dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:background="@drawable/ic_new_delivery" >

    <TextView
        android:id="@+id/textView2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Insert Customer Data:"
        android:textColor="@color/light_blue"
        android:textSize="20sp"
        android:textStyle="italic" />

</FrameLayout>

<EditText
    android:id="@+id/editCustomerName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/textView1"
    android:layout_alignBottom="@+id/textView1"
    android:layout_alignParentRight="true"
    android:ems="10"
    android:inputType="textPersonName"
    android:textColor="@color/light_blue" />

<Button
    android:id="@+id/submitInfoBtn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/textView1"
    android:layout_alignParentBottom="true"
    android:layout_alignRight="@+id/editCustomerName"
    android:text="Submit Info"
    android:textColor="@color/light_red" 
    android:onClick="submitCustomerInfo"/>

<EditText
    android:id="@+id/editCustomerPhone"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/editCustomerName"
    android:layout_alignParentRight="true"
    android:layout_alignTop="@+id/TextView01"
    android:ems="10"
    android:inputType="phone"
    android:textColor="@color/light_red" >

    <requestFocus />
</EditText>

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content" …
Run Code Online (Sandbox Code Playgroud)

java android classcastexception android-layout

2
推荐指数
1
解决办法
1万
查看次数

如何避免在Scala中使用asInstanceOf

目前我的代码需要类转换

val dataWriter: BytesDataWriter = createDataWriter

 def createDataWriter(p: SomeClass) =
    p.create_datawriter().asInstanceOf[BytesDataWriter]
Run Code Online (Sandbox Code Playgroud)

create_datawriter方法将返回超类DataWriter.asInstanceOf我尝试了这种方法,而不是使用它

val dataWriter: BytesDataWriter = createDataWriter(p)  match {
      case writer: BytesDataWriter => writer
      case _ => throw new ClassCastException
    }
Run Code Online (Sandbox Code Playgroud)

这太冗长了,如果情况不起作用.是否有更好的替代类铸造?

factory casting scala classcastexception

2
推荐指数
1
解决办法
3255
查看次数

Java继承下降ClassCastException

给定以下代码,我有一个问题:

class A{}
class B extends A {}
class C extends B{}

public class Test {
    public static void main(String[] args) {
        A a = new A();
        A a1=new A();
        B b = new B();
//        a=b;// ok
//        b=(B)a;// ClassCastException
//        a=(A)a1;  // ok
//        a=a1;  // ok

        a=(B)a1;  // compiles ok, ClassCastException
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是粗体字。我的理解是,对于要编译的代码,只需要满足这些类在相同的层次结构中,并因此可以工作(在树上进行隐式强制转换,在树上进行显式强制转换)即可。每当我遇到ClassCastException时,是因为引用指向树上的一个对象,例如,指向B类型的对象的B类型的引用。

问题所在的行似乎是指向类型A的对象的类型A的引用。强制转换为(B)显然是导致ClassCastException的原因。有人可以解释一下如何做到这一点吗?

注意:如果a1指向B类型的对象,则它将起作用(刚刚对其进行了测试)。因此,对于编译器,向下转换是合法的,并且如果引用指向正确类型的对象,则可以毫无例外地执行该向下转换。

通过将A ref a1强制转换为B并将其分配给a,看来A ref a不再期望引用类型A的对象,而是B?

谢谢,肖恩。

PS我知道这有点不寻常,正在准备Java认证。通常,我们向下转换为左侧的类型,例如b =(B)a; (并且我可以看到为什么给出了ClassCastException)。

java inheritance classcastexception downcast

2
推荐指数
1
解决办法
6784
查看次数

使用android应用程序整合branch.io sdk,获取classcasteException

我按照Branch.io上的所有说明进行操作

https://start.branch.io/#/ <<遵循此链接中的所有步骤.(我应该使用哪个键.. test_branch_key或live_branch_key两者有什么区别)

这是我的MainActivity.java文件

package absdevelopers.com.finalbranchtest;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import org.json.JSONObject;

import io.branch.referral.Branch;
import io.branch.referral.BranchError;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}
@Override
public void onStart() {
    super.onStart();

    Branch branch = Branch.getInstance();
    branch.initSession(new Branch.BranchReferralInitListener() {
        @Override
        public void onInitFinished(JSONObject referringParams, BranchError error) {
            if (error == null) {
                // params are the deep linked params associated with the link that the user clicked before showing up …
Run Code Online (Sandbox Code Playgroud)

android classcastexception branch.io

2
推荐指数
1
解决办法
675
查看次数

在进行通用转换时,在泛型方法中捕获ClassCastException

假设我有一个方法

@SuppressWarnings("unchecked")
public <T extends Number> T getNumber() {
   try {
      return (T)number; 
   } catch (ClassCastException e) {
      return null;
   }
}
Run Code Online (Sandbox Code Playgroud)

假设number是一个实例Integer,调用类似的方法

Float f = getNumber();
Run Code Online (Sandbox Code Playgroud)

结果成了一个ClassCastException.

我知道(不知何故)这是因为类型擦除,但有人可以提供更深刻的解释为什么异常升级到赋值级别并且不能在方法内捕获?

注意:我确实有public <T extends Number> T getNumber(Class<T> classT)从classT检查类型的版本,但希望摆脱传递classT并停止想知道上述问题.

java generics casting type-erasure classcastexception

2
推荐指数
1
解决办法
542
查看次数

Java Collections ArrayList,LinkedList强制转换异常

我找到了一个奇怪的案例,到目前为止我无法解释.

 public static void main(String[] args) {
    LinkedList<Integer> a = new LinkedList<>();
    a.add(2);
    a.add(3);
    a.add(4);

    for (ArrayList ax : getBatches(a)){
        System.out.println(ax);
    }

}

private static ArrayList<ArrayList<Integer>> getBatches(List<Integer> optionIds) {
        return new ArrayList(Arrays.asList(optionIds));
}
Run Code Online (Sandbox Code Playgroud)

执行结果是:

线程"main"中的异常java.lang.ClassCastException:java.util.LinkedList无法强制转换为java.util.ArrayList

for循环中的异常.

问题是:如何?返回类型ArrayList <ArrayList <Integer >>的方法如何返回LinkedList?

java collections arraylist classcastexception

2
推荐指数
1
解决办法
330
查看次数