你好,我在java中使用泛型时遇到了问题。实际的问题是,当我在方法声明上使用泛型类型时,它工作得很好。然后,如果我将泛型类型添加到接口声明中,代码将不会编译。以下是工作代码:
public interface IRuntimeConvert {
public <T> T convertInstanceOfObject(String o, Class<T> clazz);
}
public class RuntimeConvertImpl implements IRuntimeConvert {
private final Map<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()");
}
我想要创建一个数组,它的长度是固定的,但是元素是引用Iterable对象的。就像在C中创建带有指针元素的数组一样,指针可以指向任意长度的列表。
我试过这个:
// declaration
private Iterable<String>[] a;
...
// in construtor, n is known length.
a = (Iterable<String>[]) new Object[n];
编译器给了我一个警告。当我执行程序的时候。引发下面的异常。
Exception in thread "main" java.lang.ClassCas
鉴于以下班级结构:
class Animal {}
class Dog extends Animal {}
class Cat extends Animal {}
并仅在初始化时使用泛型创建列表,而不使用引用:
List dogs = new ArrayList<Dog>();
为什么这些代码不生成一个ClassCastException?
dogs.add(new Cat()); // How is Cat casted to Dog??!
Cat cat = (Cat) dogs.get(0); // Return perfectly valid Cat object.
我知道
我看过一些类似这样的代码,无法理解它的意义:
public class ClassA{
public <T> void getContactName(ContactList<T> contactList){
//do something
}
}
基本上我不理解这一点。该类编译时没有任何错误。我认为ClassA也应该成为带有参数'T‘的泛型。
谢谢
最近,我开始从基础知识中学习Java,并遇到了关于泛型类型的“小”误解,它提出了如下问题:
将参数化类型实例引用到其原始类型与使用原始类型引用另一个原始类型实例之间的区别是什么?
我是说,这段片段的区别是:
ArrayList rawTypeList_NoRawInstance = new ArrayList</*Any type here*/>();
而这个:
ArrayList rawTypeList_RawInstance = new ArrayList();
代码:
import java.util.*;
public class TestGenerics{
p
下面的代码来自一个名为ButterKnife的安卓库。我在弄清楚它是怎么工作的。
@SuppressWarnings("unchecked") // That's the point.
public <T> T castParam(Object value, String from, int fromPosition, String to, int toPosition) {
try {
return (T) value;
} catch (ClassCastException e) {
throw new Ill
我使用带有一个字符串的方法Arrays.asList()创建了列表。然后我把它分配给List<Object>,我得到了ClassCastException。我做错什么了?
守则是:
class A {
Object value;
public <T> T getAValue() {
return (T) value;
}
}
然后我做了
A a = new A();
a.value = "abc";
List<Object> list = Arrays.asList(a.getAValue());
我在Java语言中遇到了一种我完全不能理解的泛型行为(以我的.NET背景)。
public class TestGeneric<T>
{
public void get (Object arg)
{
T temp = (T) arg;
System.out.println(temp.toString());
return;
}
}
TestGeneric<Integer> tg = new TestGeneric<Integer>();
tg.get("Crack!!!
我有这样一门课:
public class Wrapper<T> {
private String message;
private T data;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data
为什么我不能有can异常?在本例中,E表示C,不是吗?B不是C,我想我的强制转换只适用于编译器。我的错误在哪里?
public class A{
public static void main(String...s){
Monitor<C> m = new Monitor<C>();
C arg2 = new C();
B d = m.f(arg2);
System.out.println(d);
}
}
class B extends A{}
class C extends B{}
class Monitor<E ext
public class MergeSort
{
/**
* @param a Array to be sorted.
* @param n Last element to be sorted.
* @return void.
*/
public static <T extends Comparable<T>> void sort(T[] a, int n)
{
}
/**
* @param inp Input Array.
* @param out Output Ar
我正在尝试创建嵌套类Key的数组,该数组使用主类BTree中的类型变量/参数,但无法在运行时摆脱ClassCastException。我不太擅长Java中的泛型,如果有人让我知道问题是什么,以及如何解决它,我会很感激。
public class BTree<T extends Comparable<T>, V> {
//...
private class Node {
public int n;
public boolean isLeaf = false;
public Key[] keys = (Key[])
我有以下代码:
public class I<T> {
private T t;
public I(T t) {
this.t=t;
}
}
public class G<T> {
private I<T> tab[];
public G() {
tab=(I<T>[]) new Object[10];
}
}
调用G()会抛出一个ClassCastException。
我如何编写G构造函数来初始化tab?
所以,我有一个非常深奥的问题。我正在尝试创建一个比较通用的但类型化的属性收集系统。它所依赖的核心假设似乎是错误的。该守则说明了这一问题:
import java.lang.Integer;
public class Test {
private static Object mObj = new String("This should print");
public static void main(String[] args ) {
String s = Test.<String>get();
System.out.println
与相关
给定此函数:
public static <S extends CharSequence> S foo(S s) {
return (S) new StringBuilder(s);
}
为什么这个调用没有异常地执行:
foo("hello");
但是这个抛出了ClassCastException?
System.out.println(foo("hello"));
public class MyGenericClass< G> {
public <G> G genericMethod1(G g){
System.out.println(g.toString());
return g;
}
public <X> G genericMethod2(G g) {
System.out.println(g.toString());
return g;
}
public <X> X genericMeth
我看到了许多其他类似的问题,但我认为,除了这些问题之外,还存在一个抽象层次,这一点决定了这一点。也就是说,我有一个带有静态泛型包装方法的实用工具类,用于反序列化泛型类型的对象(构建时未知):
public final class Utils {
public static final Gson sGson = new Gson();
public static synchronized <T> T fromJson(String doc) {
return sGson.fromJson(doc, new TypeToken<T>(){
请考虑以下代码:
public class OuterClass<T,P> {
private InnerClass<T,P>[] array; //field
public OuterClass() { //constructor
this.array = (InnerClass<T,P> [])new Object[30]; //problematic line
static class InnerClass<T,P> { //definition of my static nested class
我有如下代码:
public class Option {
...
}
public class SpecOption extends Option {
...
}
public class Data {
private List<Option> options;
public <T extends Option> void setOptions(List<T> options) {
this.options = options;
}
public <T extends Option
我使用的是java泛型和varargs。
如果我使用下面的代码,我会得到一个ClassCastException,即使我根本没有使用类型转换。
更奇怪的是,如果我在Android (dalvik)上运行,异常中不包含堆栈跟踪,并且如果我将接口更改为抽象类,则异常变量e为空。
代码:
public class GenericsTest {
public class Task<T> {
public void doStuff(T param, Callback<T> callback) {
// This gets calle
我想遍历异常原因,直到我找到“正确的那个”,但看起来类型正在被擦除,函数返回传递的异常,这将导致main中的ClassCastException。下面是我的代码: public class Main {
public static void main(String[] args) {
Throwable e0 = new CertPathValidatorException("0");
Throwable e1 = new CertificateException(e0);
Throwable e2 = new CertificateExceptio
我正在用JAVA泛型概念测试一些小的实践。
我试图从一个泛型函数返回一个列表,但是编译不允许我这样做。
检查下面的代码:
package com.test.generic.method;
import java.util.ArrayList;
import java.util.List;
public class Sample_3<T> {
public <T> List<T> testReturn(T t) {
List<T> list = new ArrayList<T> ();
l
我最近才开始学习JavaScript,并希望复制可以与数组一起使用的JavaScript映射函数。现在我不知道我的代码出了什么问题:
public class Test {
public interface Function<T> {
public T call(T... vals);
}
public <E> E[] map(E[] array, Function<E> func) {
for (int i = 0; i < array.length; i++) {
array[i] = func.call(arr
我有一个这样的BaseFragment:
public abstract class BaseFragment<C> extends Fragment {
protected C callback;
@Override
@SuppressWarnings({"unchecked"})
public void onAttach(final Context context) {
super.onAttach(context);
try {
this.callback = (C)
我试图用Mockito 1.9.5来模拟一个类,但是我很难让它开始工作。
public class Property<T> {
private T value;
public T get() { return this.value; }
public void set(T value) { this.value = value; }
}
public class Model {
private final Property<Integer> count = new Property<Integer>();
publi
我使用Gson将POJO编码和解码为JSON,但是,Gson有一些意想不到的行为。
事实上,我有一个像这样的物体
public class MyClass{
public int id;
public Object someData;
}
它是带有id和data的构造函数。
我经常将一个HashMap<Integer, Integer>传递给Object,Gson的解析非常完美。问题在于解码,它将其解码为Integer,Double的哈希映射,尽管我这样调用该函数:
private HashMap<Integer, Integer> hashMapTem
谁能解释在下列情况下发生了什么?为什么一个给出一个错误,而另一个没有?
public class TestClass<T extends Comparable<T>> {
protected T []items;
public TestClass(int size, T... values) {
items = (T[]) new Object[size];
for (int v = 0; v < Math.min(size, values.length); v++) {
items[v]
我正在尝试使用泛型,主要是为了实践和一些我曾经有过的想法。目前,我有一个问题:ClassCastException:java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType。我发现的大多数关于这方面的主题都来自于发布了非常具体代码的用户。这真的让我很难理解。我试图使问题尽可能简单,但仍然与我的实际问题有关。我希望有人能帮上忙。
Bar类:
class Bar { }
Foo类:
class Foo<T> {
ArrayList<Object> list;
Foo(int ini
我有这样一个简单的界面。
public interface EntityClass
{
public void setId(final Integer id);
public Integer getId();
}
和一堂课
public Student implements EntityClass{}
但是这段代码给了我错误,我想知道Generic Type
public class MyGenericType<T extends EntityClass>
{
private final Class<? extends Entit