我认为这里肯定会有一些我不知道的微妙内容.考虑以下:
public class Foo<T> {
private T[] a = (T[]) new Object[5];
public Foo() {
// Add some elements to a
}
public T[] getA() {
return a;
}
}
Run Code Online (Sandbox Code Playgroud)
假设您的main方法包含以下内容:
Foo<Double> f = new Foo<Double>();
Double[] d = f.getA();
Run Code Online (Sandbox Code Playgroud)
你将获得一个无法投射CastClassException的消息.java.lang.Objectjava.lang.Double
谁能告诉我为什么?我的理解ClassCastException是,当您尝试将对象转换为无法转换的类型时,它会被抛出.也就是说,它不是一个实例的子类(引用文档).例如:
Object o = new Double(3.);
Double d = (Double) o; // Working cast
String s = (String) o; // ClassCastException
Run Code Online (Sandbox Code Playgroud)
似乎我可以做到这一点.如果a只是一个T数组T[],而不是一个数组,我们可以a毫无问题地得到它.为什么数组打破了这个?
谢谢.
请帮我转换ArrayList到String [].ArrayList包含Object(VO)类型的值.
例如,
问题是我需要将国家/地区列表转换为字符串数组,对其进行排序,然后将其放入列表中.但是我得到了ClassCastException.
为我的OCA Java SE 7程序员学习考试,所以新手问题.我有一个我不明白的例子问题.以下代码编译,但在运行时给出ClassCastException:
interface Roamable {
}
class Phone {
}
public class Tablet extends Phone implements Roamable {
public static void main(String... args) {
Roamable var = (Roamable) new Phone();
}
}
Run Code Online (Sandbox Code Playgroud)
当我改变Roamable var = (Roamable) new Phone();成Roamable var = (Roamable) new String();我得到一个编译错误的时候了.
两个问题:
new Phone(),但不编译new String()?下面是我写过的第一个Java泛型:
public class MyClass {
public static <T> T castToAnotherType(Object param) {
T ret = null;
try {
ret = (T) param;
} catch (ClassCastException e) {
System.out.print("Exception inside castToAnotherType()");
}
return ret;
}
public static void main(String[] args) {
try {
String obj = MyClass.castToAnotherType(new Object());
} catch (ClassCastException e) {
System.out.print("Exception outside castToAnotherType()");
}
}
}
Run Code Online (Sandbox Code Playgroud)
结果是"castToAnotherType()之外的异常".为什么在泛型方法中不会发生异常?
我在XPage应用程序中经常遇到异常:
java.lang.ClassCastException: someClass incompatible with someClass.
Run Code Online (Sandbox Code Playgroud)
两个提到的类都是相同的,它是用作会话bean的类.我无法谷歌任何覆盖我的问题的东西.对此的通常解释是设计元素的变化,而不是我的情况.
从那时起,直到重启http任务或重新保存faces-config.xml,XPage应用程序变得不可用(使用会话bean someClass的页面).
在某些情况下,这与其他例外有关:
com.ibm.jscript.InterpretException: Script interpreter error, line=x, col=y:
Java method 'method(signature containg someClass)'
on java class 'someOtherClass' not found
Run Code Online (Sandbox Code Playgroud)
这种行为的背后是什么?
我下面的免费在线书"Grails入门指南"(http://www.infoq.com/minibooks/grails-getting-started),并试图列出任何域上课的时候我得到一个java.lang.ClassCastException.任何人都可以破译这个吗?
URI: /RaceTrack/runner/list
Class: java.lang.ClassCastException
Message: sun.proxy.$Proxy26 cannot be cast to org.springframework.orm.hibernate3.HibernateCallback
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
Line | Method
->> 15 | list in RunnerController.groovy
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 186 | doFilter in PageFragmentCachingFilter.java
| 63 | doFilter in AbstractFilter.java
| 1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 615 …Run Code Online (Sandbox Code Playgroud) 我的初始代码行在重写方法中onGlobalLayout():
img.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 100));
Run Code Online (Sandbox Code Playgroud)
在重写方法中发生ClassCastException onGlobalLayout()-
错误日志:
09-02 14:25:35.326: E/AndroidRuntime(5187): java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.support.v4.view.ViewPager$LayoutParams
09-02 14:25:35.326: E/AndroidRuntime(5187): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1319)
09-02 14:25:35.326: E/AndroidRuntime(5187): at android.view.View.measure(View.java:15181)
09-02 14:25:35.326: E/AndroidRuntime(5187): at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:617)
09-02 14:25:35.326: E/AndroidRuntime(5187): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:399)
09-02 14:25:35.326: E/AndroidRuntime(5187): at android.view.View.measure(View.java:15181)
09-02 14:25:35.326: E/AndroidRuntime(5187): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
09-02 14:25:35.326: E/AndroidRuntime(5187): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1390)
Run Code Online (Sandbox Code Playgroud)
当我执行以下操作以解决上述错误时,如其他SO帖子中所示:
img.setLayoutParams(new ViewPager.LayoutParams(ViewPager.LayoutParams.MATCH_PARENT, 100));
Run Code Online (Sandbox Code Playgroud)
然后,我得到编译时错误:
The constructor ViewPager.LayoutParams(int, int) is undefined
Run Code Online (Sandbox Code Playgroud)
xml中的ViewPager定义如下:
<android.support.v4.view.ViewPager
android:id="@+id/HView"
android:layout_width="560dp"
android:layout_height="255dp"
android:layout_centerHorizontal="true"
android:layout_marginLeft="160sp"
android:layout_marginTop="110sp"
android:layout_marginBottom="80sp">
</android.support.v4.view.ViewPager>
Run Code Online (Sandbox Code Playgroud) 我有一些看起来像这样的代码(方法的负面测试的一部分get):
import java.util.*;
public class Test {
Map<String, Object> map = new HashMap<>();
public static void main (String ... args) {
Test test = new Test();
test.put("test", "value"); // Store a String
System.out.println("Test: " + test.get("test", Double.class)); // Retrieve it as a Double
}
public <T> T get(String key, Class<T> clazz) {
return (T) map.get(key);
}
public void put(String key, Object value) {
map.put(key, value);
}
}
Run Code Online (Sandbox Code Playgroud)
我期待它抛出一个,ClassCastException但它成功打印:
Test: value
Run Code Online (Sandbox Code Playgroud)
它为什么不扔?
我的问题的根源是我有一个方法来处理JDBC查询并在查询后释放所有连接."ResultSet"被传递回调用方法.
我发现我不能简单地将ResultSet传递回调用方法,因为关闭了ResultSet,然后任何使用它的尝试都会产生一个已经关闭的错误.
因此,在关闭资源之前,我遍历ResultSet并将其存储在ArrayList中.
因为该方法处理任何查询,我不知道返回什么类型的类型.因此,ArrayList存储通用s.
这适用于一个表中的一个字段...在一个数据库中,即Integer []字段.
我从那里得到的是一个JDBC4Array对象,我有一段时间将它传递给Integer []以存储在ArrayList中.我确实需要它是一个Integer [].
这就是我现在所拥有的......经过很多挫败的banjaxxing之后.
在循环连接ResultSet之前,在连接关闭之前,我这样做:
// For every row in the ResultSet
while (rs.next()) {
// Initialize a ITILRow for this ResultSet row
ITILRow row = new ITILRow();
// For each column in this row, add that object to the ITILRow
for (int colNum=1; colNum<=numCols; colNum++) {
Object o = rs.getObject(colNum);
// JDBC4Array is a real pain in the butt
ArrayList<Integer> tmpList = new ArrayList<Integer>();
if (o != null) {
if (o.getClass().getSimpleName().endsWith("Array")) {
// …Run Code Online (Sandbox Code Playgroud) 我在集群模式和本地模式下尝试简单的字数计算示例它在本地模式下工作正常但在集群模式下抛出类强制转换异常这里是代码片段...
package com.example
import com.typesafe.config.ConfigFactory
import org.apache.spark.{SparkConf, SparkContext}
/**
* Created by Rahul Shukla on 20/2/16.
*/
object SampleFile extends App {
val config = ConfigFactory.load()
val conf = new SparkConf()
.setAppName("WordCount")
//.setMaster("spark://ULTP:7077")
.setMaster("local")
.setSparkHome(config.getString("example.spark.home"))
.set("spark.cleaner.ttl", "30s")
.set("spark.app.id", "KnowledgeBase")
.set("spark.driver.allowMultipleContexts", "true")
val sc = new SparkContext(conf)
sc.textFile("build.sbt").flatMap(row => row.split(" ")).map((_, 1)).reduceByKey(_ + _).foreach(println)
}
Run Code Online (Sandbox Code Playgroud)
环境Spark 1.6构建对scala 2.11.7
例外:
java.lang.ClassCastException: cannot assign instance of scala.collection.immutable.List$SerializationProxy to field org.apache.spark.rdd.RDD.org$apache$spark$rdd$RDD$$dependencies_ of type scala.collection.Seq in instance of org.apache.spark.rdd.MapPartitionsRDD
at java.io.ObjectStreamClass$FieldReflector.setObjFieldValues(ObjectStreamClass.java:2133)
at java.io.ObjectStreamClass.setObjFieldValues(ObjectStreamClass.java:1305)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2006) …Run Code Online (Sandbox Code Playgroud) java ×7
generics ×3
arrays ×2
android ×1
apache-spark ×1
arraylist ×1
casting ×1
exception ×1
grails ×1
groovy ×1
inheritance ×1
lotus-domino ×1
xpages ×1