我想知道如果将返回值设置为模板,模板变量的数据类型是什么.我在某个代码中看到过这个,但我不知道它从会话中检索到的值.
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的返回变量类型,因此不需要强制转换.这适用于所有情况,但突然在代码的一部分失败了.
我有以下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背景到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.我正在尝试将一个私有变量添加到库类中,并覆盖其中一个接受在库中定义的类作为参数的类方法(我正在尝试将该字段添加到的类).
我正在使用a Comparator来对viewcoped托管bean中List<Entity>的它的属性(类型Date)进行排序.
问题是我一直得到ClassCastException如下 -
java.lang.ClassCastException:pkg.db.BaseArStatus无法强制转换为pkg.db.BaseArStatus.
为什么不能投BaseArStatus来BaseArStatus?是因为BaseArStatus是Entity吗?
这个问题对我来说真的很奇怪,因为我每次都没有得到例外.在构建和部署应用程序时,大多数工作正常(运行没有任何问题)但有时(即使我做同样的事情 - 构建和部署)它在运行时失败了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) 我试图在点击它时将行设置为粗体.但是当我尝试将视图转换为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) 在过去的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很新,但是根据我的阅读和谷歌搜索,这种向下转换应该是可能的,所以我有点失去了这个异常的原因.到目前为止,我最好的猜测是这是由类型擦除引起的,但我还没有找到关于此事的直接答案.有关此异常原因的任何想法或更好的解决方法吗?
我打电话给这个班级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) 我想要一个带有通用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) 还有其他相关问题,但它们没有解决我的情况(它们的错误代码与某种回收和/或客户端代码的错误转换调用有关).
我的情况更复杂.
我有一些代码,用户可以在其中提取照片库.
问题是,它在我拥有的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
有人可以向我解释为什么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 ×7
android ×2
generics ×2
android-view ×1
blackberry ×1
casting ×1
comparator ×1
dom ×1
downcast ×1
entity ×1
integer ×1
iterator ×1
jsf-2 ×1
linked-list ×1
popup ×1
scala ×1
string ×1
synchronized ×1
templates ×1
textview ×1
xml ×1