标签: classcastexception

模板的类型,如果模板是返回值(Java)

我想知道如果将返回值设置为模板,模板变量的数据类型是什么.我在某个代码中看到过这个,但我不知道它从会话中检索到的值.

public class RequestObject {
    public <T> T getFromSessionMap(String sessionKey) {
        return (T)session.getAttribute(sessionKey);
    }
}
Run Code Online (Sandbox Code Playgroud)

这个外部的代码是:

MyClassType type = request.getFromSessionMap("abc");
Run Code Online (Sandbox Code Playgroud)

在转换为我的对象时,该行遇到ClassCastException.但是当我添加监视session.getAttribute("abc")时,它显示该类型是MyClassType.任何帮助,将不胜感激.

显然,这个使用模板的特殊代码使得getFromSessionMap的返回变量类型,因此不需要强制转换.这适用于所有情况,但突然在代码的一部分失败了.

java templates classcastexception

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

ClassCastException读取XML文件

我有以下xml文件:

<?xml version="1.0" encoding="UTF-8"?>  
<c1>
 <c2 id="0001" n="CM" urlget="/at/CsM" urle="/E/login.jsp">
 </c2>
 <c2 id="0002" n="C2M" urlget="/a2t/CsM" urle="/E2/login.jsp">
 </c2>
</c1> 
Run Code Online (Sandbox Code Playgroud)

我试图以这种方式加载c2的属性:

Document d =
 DocumentBuilderFactory.newInstance()
 .newDocumentBuilder()
 .parse("epxy.xml");
Element  c1 = d.getDocumentElement();
Element c2 = (Element)c1.getFirstChild();
while (c2 != null) {
  ...         
  c2 = (Element)c2.getNextSibling();
}
Run Code Online (Sandbox Code Playgroud)

但我得到异常java.lang.ClassCastException:org.apache.xerces.dom.DeferredTextImpl与 行中的org.w3c.dom.Element不兼容

Element c2 = (Element)c1.getFirstChild();
Run Code Online (Sandbox Code Playgroud)

在循环之前.

任何提示?谢谢.

java xml dom classcastexception

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

Scala:downcasting抛出java.lang.ClassCastException

从非Java背景到Scala给我带来了很多困难,包括这个.

scala> class A
defined class A

scala> class B extends A      
defined class B

scala> val a = new A
a: A = A@2e893a4a

scala> val b = new B
b: B = B@3a47c130

scala> a.asInstanceOf[B]
java.lang.ClassCastException: A cannot be cast to B
...

scala> b.asInstanceOf[A]
res1: A = B@3a47c130
Run Code Online (Sandbox Code Playgroud)

我知道ClassCastException被抛出,因为在运行时,a它看起来不像B,但实际上它是(据我所知).这里发生了什么?任何解决方法?谢谢.

编辑:JVM如何理解a无法转换为B?它a.getClass和之间进行了一些浅薄的比较B吗?

PS.我正在尝试将一个私有变量添加到库类中,并覆盖其中一个接受在库中定义的类作为参数的类方法(我正在尝试将该字段添加到的类).

casting scala classcastexception downcast

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

比较器抛出奇怪的ClassCastException:pkg.MyClass无法强制转换为pkg.MyClass

我正在使用a Comparator来对viewcoped托管bean中List<Entity>的它的属性(类型Date)进行排序.

问题是我一直得到ClassCastException如下 -

java.lang.ClassCastException:pkg.db.BaseArStatus无法强制转换为pkg.db.BaseArStatus.

为什么不能投BaseArStatusBaseArStatus?是因为BaseArStatusEntity吗?

这个问题对我来说真的很奇怪,因为我每次都没有得到例外.在构建和部署应用程序时,大多数工作正常(运行没有任何问题)但有时(即使我做同样的事情 - 构建和部署)它在运行时失败了ClassCastException.

为什么这种情况有时只发生而不是一直发生?是因为我在托管bean中使用它吗?

这就是托管bean的样子 -

@ManagedBean
@ViewScoped
public class MyBean {

@PersistenceContext(unitName = "myPU")
private EntityManager em;

public void myMethod() {
    List<BaseArStatus> basList = this.fetchAllBaseArStatus();
    Collections.sort(basList, new Comparator<BaseArStatus>() {
        @Override
        public int compare(BaseArStatus o1, BaseArStatus o2) {
            return o1.getMonthDate().compareTo(o2.getMonthDate());
        }
    });
//...
Run Code Online (Sandbox Code Playgroud)

而实体BaseArStatus-

@Entity
@Table(name = "base_ar_status")
@NamedQueries({ …
Run Code Online (Sandbox Code Playgroud)

java entity classcastexception comparator jsf-2

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

Android - 如何在单击列表项时将字体设置为粗体

我试图在点击它时将行设置为粗体.但是当我尝试将视图转换为TextView时,它给出了一个ClassCastException,如下所示 -

setListAdapter(adapter);
final ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
  int position, long id) {
            TextView tv = (TextView)view;
            tv.setTypeface(null, Typeface.BOLD);
        }
        });
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我该怎么办呢?

编辑:

我的适配器看起来像 -

public class CountryListAdapter extends ArrayAdapter<String> {
private final Activity context;
private final ArrayList<String> names;

public CountryListAdapter(Activity context, ArrayList<String> names) {
    super(context, R.layout.rowlayout, names);
    this.context = context;
    this.names = names;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = context.getLayoutInflater(); …
Run Code Online (Sandbox Code Playgroud)

android classcastexception textview android-view

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

泛型和向下转换(java)

在过去的3个小时里一直试图找到一个直接的答案/解决方案而没有运气,希望你们可以提供帮助:

我有以下类使用二叉搜索树实现间隔树:

public class Node<T extends Comparable<T>> implements Comparable<Node<T>> {...}

public class BinarySearchTree<T extends Comparable<T>> {
protected Node<T> root;
...}

public class IntervalNode extends Node<Interval> {...}

public class IntervalTree extends BinarySearchTree<Interval> {...}
Run Code Online (Sandbox Code Playgroud)

当我在IntervalTree实例的根成员上尝试以下强制转换时,我得到一个ClassCastException:

IntervalNode CurrentNode = (IntervalNode)root; //root being of type Node<Interval>
which IntervalNode extends.
Run Code Online (Sandbox Code Playgroud)

我对java很新,但是根据我的阅读和谷歌搜索,这种向下转换应该是可能的,所以我有点失去了这个异常的原因.到目前为止,我最好的猜测是这是由类型擦除引起的,但我还没有找到关于此事的直接答案.有关此异常原因的任何想法或更好的解决方法吗?

java generics classcastexception

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

命中ClassCastException

我打电话给这个班级PopupScreen.

public class Custom_LoadingScreen extends PopupScreen {
private VerticalFieldManager vfm;
private Util_AnimateGifField anmtFldCycle = null;
private GIFEncodedImage gifImgCycle;

public Custom_LoadingScreen() {
    super(new VerticalFieldManager());
    Background bg = BackgroundFactory.createSolidTransparentBackground(
            Color.BLACK, 190);
    setBackground(bg);
    setBorder(BorderFactory.createSimpleBorder(new XYEdges(),
            Border.STYLE_TRANSPARENT));

    gifImgCycle = (GIFEncodedImage) GIFEncodedImage
            .getEncodedImageResource("LoadingSpinner.gif");
    anmtFldCycle = new Util_AnimateGifField(gifImgCycle,
            Field.FIELD_HCENTER);

    vfm = new VerticalFieldManager(USE_ALL_WIDTH) {
        protected void sublayout(int maxWidth, int maxHeight) {
            super.sublayout(Display.getWidth(), Display.getHeight());
            setExtent(Display.getWidth(), Display.getHeight());
        }
    };
    int padding = (Display.getHeight() - 16) / 2;
    if (padding > 0) {
        anmtFldCycle.setPadding(padding, 0, 0, 0); …
Run Code Online (Sandbox Code Playgroud)

blackberry popup classcastexception

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

java.lang.ClassCastException:创建同步链接列表

我想要一个带有通用A类的同步LinkedList,这里是相关部分:

public abstract class A<T extends B> implements Runnable {
Run Code Online (Sandbox Code Playgroud)

B的接口,即"真正的"B,将是一个超类

public interface B{
Run Code Online (Sandbox Code Playgroud)

以下设置将引发运行时错误:

LinkedList<A<? extends B>> eopList = (LinkedList<A<? extends B>>) Collections
            .synchronizedCollection(new LinkedList<A<? extends B>>());
Run Code Online (Sandbox Code Playgroud)

我找到了以下提案,但它也不会编译:

LinkedList<A<? extends B>> eopList = (LinkedList) Collections
            .synchronizedCollection(new LinkedList<A<? extends B>>());
Run Code Online (Sandbox Code Playgroud)

这是日志:

Exception in thread "main" java.lang.ClassCastException: java.util.Collections$SynchronizedCollection cannot be cast to java.util.LinkedList
Run Code Online (Sandbox Code Playgroud)

java generics linked-list synchronized classcastexception

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

android.widget.FrameLayout $ LayoutParams无法强制转换为android.widget.AbsListView $ LayoutParams

还有其他相关问题,但它们没有解决我的情况(它们的错误代码与某种回收和/或客户端代码的错误转换调用有关).

我的情况更复杂.

我有一些代码,用户可以在其中提取照片库.

问题是,它在我拥有的7部手机上工作得很好,所有手机都运行API 19+.

但是我有运行API 17的Google Nexus 4.3.我得到的崩溃日志中没有我的代码,只有库代码.如果你可以建议我如何能够编写一个解决方案,我会全力以赴:

FATAL EXCEPTION: main
    java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams
            at android.widget.GridView.onMeasure(GridView.java:1042)
            at android.view.View.measure(View.java:15848)
            at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:728)
            at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:477)
            at android.view.View.measure(View.java:15848)
            at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:728)
            at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:477)
            at android.view.View.measure(View.java:15848)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5008)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
            at android.view.View.measure(View.java:15848)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5008)
            at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
            at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
            at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
            at android.view.View.measure(View.java:15848)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5008)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
            at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2189)
            at android.view.View.measure(View.java:15848)
            at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1905)
            at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1104)
            at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1284)
            at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004)
            at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481)
            at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
            at android.view.Choreographer.doCallbacks(Choreographer.java:562)
            at android.view.Choreographer.doFrame(Choreographer.java:532)
            at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
            at android.os.Handler.handleCallback(Handler.java:730)
            at …
Run Code Online (Sandbox Code Playgroud)

java android classcastexception android-runtime android-framelayout

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

Java:在Iterator上强制转换忽略除String类型之外的整数

有人可以向我解释为什么Java忽略除了String类之外的所有对象类型的迭代器的强制转换?

我有以下代码:

List list = new LinkedList();
list.add(new Object());
list.add(new String("First"));
list.add(10);
list.add(2.3);
Run Code Online (Sandbox Code Playgroud)

我有两个案例:

1)

Iterator<Integer> crunchifyIterator = list.iterator();
while (crunchifyIterator.hasNext()) {
    System.out.println((crunchifyIterator.next()));
}
Run Code Online (Sandbox Code Playgroud)

结果是:

java.lang.Object@2a139a55

10个
2.3

2)

Iterator<String> crunchifyIterator = list.iterator();
while (crunchifyIterator.hasNext()) {
    System.out.println((crunchifyIterator.next()));
}
Run Code Online (Sandbox Code Playgroud)

结果是:

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

我不知道原因是什么.

java string integer iterator classcastexception

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