标签: classcastexception

ClassCastException:RestTemplate返回List <LinkedHashMap>而不是List <MymodelClass>

我正在尝试访问MyModelClass上的getter方法,但我的代码返回List<LinkedHashMap>而不是List<MyModelClass>.这是我的代码.

List<MyModelClass> myModelClass=(List<MyModelClass>) restTemplate.postForObject(url,mvm,List.class);

System.out.println("Response= " +  myModelClass);
Run Code Online (Sandbox Code Playgroud)

我试图打印响应,我得到了我期待的JSON响应.但是当我试图运行这段代码时.

System.out.println("Response= " +  myModelClass.get(0).getMessage());
Run Code Online (Sandbox Code Playgroud)

它会产生这个错误.

java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.XXX.XXX.MyModelClass 
Run Code Online (Sandbox Code Playgroud)

这是不匹配的.有人可以帮我摆脱这个错误吗?谢谢.

MyModelClass

public class MyModelClass{

    /**
     * 
     */
    @JsonProperty("id")
    public String id;

    @JsonProperty("type")
    public String type;

    @JsonProperty("user")
    public String user;

    @JsonProperty("message")
    public String message;

    //getters
Run Code Online (Sandbox Code Playgroud)

错误

MyModelClass[] myModelClass= restTemplate.postForObject(url,mvm, myModelClass[].class);
Run Code Online (Sandbox Code Playgroud)

org.springframework.http.converter.HttpMessageNotReadableException:无法读取JSON:无法从START_OBJECT令牌中反序列化java.util.ArrayList的实例

JSON响应结构

    [{"key1":"value1","key2":"value2","parameters":{"key1":"value1","key2":"value2","key3":"value3","key4":"value4","key5":"value5"}},
{"key12":"value12","key22":"value22","parameters":{"key12":"value12","key22":"value22","key32":"value32","key42":"value42","key52":"value52"}}]
Run Code Online (Sandbox Code Playgroud)

如果有任何关于如何在RestTemplate中映射这种JSON响应的建议,那将会有很大帮助.谢谢

java spring android classcastexception resttemplate

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

如何声明Android偏好的类型?

我有一个preferences.xml,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
  xmlns:android="http://schemas.android.com/apk/res/android">
 <EditTextPreference
  android:name="Sample"
  android:enabled="true"
  android:persistent="true"
  android:summary="Sample"
  android:defaultValue="3.0"
  android:title="Sample"
  android:key="sample" />
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

当我执行sp.getString("sample","3.0")时,它工作正常并返回一个字符串,但它不应该是一个字符串,它应该是一个浮点数.运行sp.getFloat("sample",3.0f)会抛出ClassCastException,因为它是一个字符串.

我应该在XML中放置什么以便将首选项存储为浮点数?

android preferences classcastexception

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

转换Java功能接口

一如既往,我正在查看JDK 8源代码并发现非常有趣的代码:

@Override
default void forEachRemaining(Consumer<? super Integer> action) {
    if (action instanceof IntConsumer) {
        forEachRemaining((IntConsumer) action);
    } 
}
Run Code Online (Sandbox Code Playgroud)

问题是:怎么Consumer<? super Integer>可能是一个实例 IntConsumer?因为他们处于不同的等级.

我已经制作了类似的代码片段来测试:

public class InterfaceExample {
    public static void main(String[] args) {
        IntConsumer intConsumer = i -> { };
        Consumer<Integer> a = (Consumer<Integer>) intConsumer;

        a.accept(123);
    }
}
Run Code Online (Sandbox Code Playgroud)

但它抛出ClassCastException:

Exception in thread "main" 
    java.lang.ClassCastException: 
       com.example.InterfaceExample$$Lambda$1/764977973 
     cannot be cast to 
       java.util.function.Consumer
Run Code Online (Sandbox Code Playgroud)

你可以在java.util.Spliterator.OfInt#forEachRemaining(java.util.function.Consumer)找到这段代码.

java lambda classcastexception java-8 functional-interface

25
推荐指数
3
解决办法
4182
查看次数

获取类转换异常,其中两个类完全相同

我正在做一个JBoss SEAM项目,当我查看表单时,我收到此错误.

java.lang.ClassCastException:
it.cogitoweb.csi.entity.csiorelav.CsiTipoLav cannot be cast to
it.cogitoweb.csi.entity.csiorelav.CsiTipoLav
Run Code Online (Sandbox Code Playgroud)

它总是与屏幕上显示的形式相关的JPA类,它对我来说没有意义,为什么它是同一个类,似乎不可能.

java classcastexception

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

Android上的同类的类强制转换异常

我在Android上遇到了ClassCastException的奇怪问题.一个类不能被转换为同一个类:

java.lang.RuntimeException: Unable to start activity ComponentInfo: java.lang.ClassCastException: com.example.model.BadeWrapper cannot be cast to com.example.model.BadgeWrapper

java.lang.ClassCastException: com.example.events.widgets.TouchyWebView cannot be cast to com.example.events.widgets.TouchyWebView

java.lang.ClassCastException: com.example.friends.widgets.FriendsTabView cannot be cast to com.example.friends.widgets.FriendsTabView
Run Code Online (Sandbox Code Playgroud)

当我找到有错误的行时,它所做的就是通过id查找视图或使用参数创建片段,例如:

FriendsTabView friendsTabView;
friendsTabView = (FriendsTabView) view.findViewById(R.id.friends_bottom_tab_panel);
Run Code Online (Sandbox Code Playgroud)

正如我的BugSense所说,这个问题只发生在带有android 5.0.0(三星SM-G900F)的三星Galaxy S5上.我在其他设备上从未遇到过这个问题:

  • 摩托罗拉Moto G第一代(Android 5.0.1)
  • 三星Galaxy S3 Mini(Android 4.1.2)
  • LG G2 Mini(Android 4.4.2)
  • 索尼Xperia L(Android 4.1.2)

有没有人遇到过这个问题?有没有办法解决它?

android classcastexception findviewbyid

19
推荐指数
1
解决办法
3845
查看次数

hadoop MultipleInputs因ClassCastException而失败

我的hadoop版本是1.0.3,当我使用multipleinputs时,我收到了这个错误.

java.lang.ClassCastException: org.apache.hadoop.mapreduce.lib.input.TaggedInputSplit cannot be cast to org.apache.hadoop.mapreduce.lib.input.FileSplit
at org.myorg.textimage$ImageMapper.setup(textimage.java:80)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:142)
at org.apache.hadoop.mapreduce.lib.input.DelegatingMapper.run(DelegatingMapper.java:55)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:764)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:370)
at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:416)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)
at org.apache.hadoop.mapred.Child.main(Child.java:249)
Run Code Online (Sandbox Code Playgroud)

我测试了单输入路径,没问题.只有我用的时候

MultipleInputs.addInputPath(job, TextInputpath, TextInputFormat.class,
            TextMapper.class);
    MultipleInputs.addInputPath(job, ImageInputpath,
            WholeFileInputFormat.class, ImageMapper.class); 
Run Code Online (Sandbox Code Playgroud)

我用Google搜索并发现此链接https://issues.apache.org/jira/browse/MAPREDUCE-1178,其中说0.21有此错误.但是我使用1.0.3,这个bug又回来了.任何人都有同样的问题或任何人都可以告诉我如何解决它?谢谢

这是图像映射器的设置代码,第4行是发生错误的地方:

protected void setup(Context context) throws IOException,
            InterruptedException {
        InputSplit split = context.getInputSplit();
        Path path = ((FileSplit) split).getPath();
        try {
            pa = new Text(path.toString());
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
Run Code Online (Sandbox Code Playgroud)

hadoop classcastexception

17
推荐指数
1
解决办法
6204
查看次数

FrameLayout到RelativeLayout ClassCastException,即使没有使用FrameLayout

在我的应用程序中,我有一个布局RelativeLayout,我想在运行时以编程方式设置边距.但是,当我这样做时,它让我ClassCastExceptionFrameLayout不能投RelativeLayout.我没有使用任何FrameLayout,也没有导入FrameLayout.问题仍然存在.我使用的xml是:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rl_root"
android:background="@color/menu_bg"
android:layout_width="wrap_content"
android:layout_height="fill_parent" >

<RelativeLayout
    android:id="@+id/ll_lhs_menu"
    android:layout_width="300dip"
    android:layout_height="fill_parent"
    android:background="@color/menu_bg"
    android:orientation="vertical">

    .....

</RelativeLayout>

<RelativeLayout
    android:id="@+id/rl_right"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignParentRight="true"
    android:background="@drawable/capture_port"
    android:scrollbars="none" >

    ....

</RelativeLayout>

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

这是我的onCreate,我将边距设置为父布局:

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.menu);

 _rootLayout = (RelativeLayout) findViewById(R.id.rl_root);
RelativeLayout.LayoutParams _rootLayoutParams = new RelativeLayout.LayoutParams(_rootLayout.getWidth(), _rootLayout.getHeight());
_rootLayoutParams.setMargins(300, 0, 300, 0);
_rootLayout.setLayoutParams(_rootLayoutParams);
}
Run Code Online (Sandbox Code Playgroud)

这是LogCat:

    07-18 21:12:39.410: E/AndroidRuntime(7663): FATAL EXCEPTION: …
Run Code Online (Sandbox Code Playgroud)

android classcastexception android-layout android-relativelayout android-framelayout

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

java.lang.ClassCastException:com.sun.faces.facelets.compiler.UIInstructions无法强制转换为org.primefaces.model.menu.MenuElement

今天早上我来到我的办公室,我看到了第一件事:我的公司网站崩溃了.因为我,我想.

现在我尝试了一个半小时来解决这个问题,但我什么都没发现,每个人都失去理智,因为网站不起作用,我无法修复它(我一个人.网站的创建者已经消失或者在假期).所以我希望你能帮助我!

当我调用我网站的dashboard.xhtml时,我得到了这个例外.

java.lang.ClassCastException: com.sun.faces.facelets.compiler.UIInstructions cannot be cast to org.primefaces.model.menu.MenuElement
Run Code Online (Sandbox Code Playgroud)

我的问题是:在整个例外中,我自己完成的文件无处可去.所以我真的不知道我的错误在哪里.

你能帮助我吗?

以下是一些其他信息:

整个例外:

SEVERE: Error Rendering View[/WEB-INF/flows/dashboard/dashboard.xhtml]
java.lang.ClassCastException: com.sun.faces.facelets.compiler.UIInstructions cannot be cast to org.primefaces.model.menu.MenuElement
at org.primefaces.component.tieredmenu.TieredMenuRenderer.encodeElements(TieredMenuRenderer.java:97)
at org.primefaces.component.tieredmenu.TieredMenuRenderer.encodeSubmenu(TieredMenuRenderer.java:162)
at org.primefaces.component.tieredmenu.TieredMenuRenderer.encodeElements(TieredMenuRenderer.java:119)
at org.primefaces.component.tieredmenu.TieredMenuRenderer.encodeMenu(TieredMenuRenderer.java:78)
at org.primefaces.component.menubar.MenubarRenderer.encodeMarkup(MenubarRenderer.java:49)
at org.primefaces.component.menu.BaseMenuRenderer.encodeEnd(BaseMenuRenderer.java:105)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125)
at org.springframework.faces.webflow.FlowViewHandler.renderView(FlowViewHandler.java:99)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at org.springframework.faces.webflow.FlowLifecycle.render(FlowLifecycle.java:80)
at org.springframework.faces.webflow.JsfView.render(JsfView.java:89)
at org.springframework.webflow.engine.ViewState.render(ViewState.java:296)
at org.springframework.webflow.engine.ViewState.refresh(ViewState.java:243)
at org.springframework.webflow.engine.ViewState.resume(ViewState.java:221)
at org.springframework.webflow.engine.Flow.resume(Flow.java:545)
at org.springframework.webflow.engine.impl.FlowExecutionImpl.resume(FlowExecutionImpl.java:258)
at org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:169)
at …
Run Code Online (Sandbox Code Playgroud)

jsf menu classcastexception primefaces

17
推荐指数
3
解决办法
3万
查看次数

ArrayList无法强制转换为Parcelable

我得到以下错误:

  • 键com..BookStatus期望Parcelable但值是一个ArrayList
  • ClassCastException:ArrayList无法强制转换为Parcelable - > and thefter:无法启动Activity - NullPointerException
  • ArrayList有BookStatus对象的值(listToPass)

    • 键com.example.books.BookStatus期望Parcelable但值是java.util.ArrayList.返回了默认值
    • 尝试转换生成的内部异常:
    • java.lang.ClassCastException:java.util.ArrayList无法强制转换为android.os.Parcelable
    • 在com.example.books4locals.SearchActivity.onCreate(SearchActivity.java:46) - >这是bundle.getparcelable方法

我能做什么?

HomeActivity.java

    ArrayList<BookStatus> listToPass = new ArrayList<BookStatus>(); // fill with smthg

        protected void onPostExecute(String result) {

            if (listToPass != null) {

                Intent i = new Intent(getApplicationContext(),
                        SearchActivity.class);
                //              ArrayList<BookStatus> bs = new ArrayList<BookStatus> (Arrays.asList(bArr));

                i.putParcelableArrayListExtra("com.example.books.BookStatus", listToPass);
                startActivity(i);
Run Code Online (Sandbox Code Playgroud)

SearchActivity.java

          protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.searchactivity_main);

            Bundle bundle = getIntent().getExtras();
            ArrayList<BookStatus> bookStatus = bundle
                    .getParcelable("com.example.books.BookStatus");
Run Code Online (Sandbox Code Playgroud)

BookStatus.java

         public class BookStatus implements Parcelable {

        public BookStatus() { …
Run Code Online (Sandbox Code Playgroud)

android classcastexception parcelable

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

为什么使用Option包装泛型方法调用会延迟ClassCastException?

可以说我有一个像这样的数组*:

val foo: Any = 1 : Int
Option(foo.asInstanceOf[String])
Run Code Online (Sandbox Code Playgroud)

由于显而易见的原因失败:

// java.lang.ClassCastException: java.lang.Integer cannot be cast to 
// java.lang.String
// ... 48 elided
Run Code Online (Sandbox Code Playgroud)

接下来让我们考虑以下类:

case class DummyRow() {
  val foo: Any = 1 : Int
  def getAs[T] = foo.asInstanceOf[T]
  def getAsOption[T] = Option(foo.asInstanceOf[T])
}
Run Code Online (Sandbox Code Playgroud)

至于我可以告诉大家getAs应该的行为方式与以前一样apply,然后asInstanceOf.

令人惊讶的是事实并非如此.单独调用时会抛出异常:

DummyRow().getAs[String]
// java.lang.ClassCastException: java.lang.Integer cannot be cast to 
// java.lang.String
// ... 48 elided
Run Code Online (Sandbox Code Playgroud)

但当Option成功包装时:

val stringOption = Option(DummyRow().getAs[String])
// Option[String] = Some(1)

DummyRow().getAsOption[String]
// Option[String] …
Run Code Online (Sandbox Code Playgroud)

generics scala classcastexception scala-option scala-generics

16
推荐指数
1
解决办法
807
查看次数