type-erasure

    5热度

    2回答

    考虑一个泛型函数: def genericFn[T](fn: T => Boolean): Unit = { // do something involves T } 是不可能性限制T(在编译时)是一个简单的类型,而不是一个类型像List[Int]? 下属的问题,我想解决的是这样的: var actorReceive: Receive = PartialFunction.empty

    2热度

    1回答

    所以我现在正在度假,没有电脑。但...不能停止考虑代码。完全痴迷。无论如何,我自己不能测试这个现在,所以问这里如果这将工作: public <T> void foo(T t){ doSomething(T.class); } 我知道所有类型擦除,但从来没有想过这种方式。在这种情况下,T将成为传递给此方法的实际对象,这要感谢泛型在运行时使用的隐式转换,实际的类类型T是否会在运行时传递

    1热度

    1回答

    这是事情。 我们在我们的应用程序中使用了很多Wicket Panels,并且为了测试目的,它们应该在一般情况下生成。在理论上,这部分工作:对于构造函数中的每个参数类型,我只提供一个可能的参数,因此它是查找这些参数类型是什么的问题 - 反射。 问题是:类型擦除。许多构造函数使用类的多个版本作为具有各种不同类型参数的参数。类型擦除意味着,据我所知,我无法在运行时区分它们。 那么,在这种情况下,是否有任

    1热度

    1回答

    任何人都可以解释为什么会发生? scala> def as[T](v: Any) = Try(v.asInstanceOf[T]) as: [T](v: Any)scala.util.Try[T] scala> as[Int]("Hello") res0: scala.util.Try[Int] = Success(Hello) scala> res0.map(_ + 1) res1

    1热度

    2回答

    我正在将Java库移植到Swift 2.0并且在泛型中遇到一些麻烦。 我有以下协议层次: public protocol Graph { typealias V: Hashable typealias E: Hashable func getAllEdges(sourceVertex: V, targetVertex: V) -> Set<E>? func

    1热度

    1回答

    我有许多类都需要一个未指定类型的对象并返回一个固定类型的结果。此外,这些对象是模板化的,它改变了结果的计算。我想将这些对象隐藏在一个通用接口后面。下面的例子应该说清楚。 struct Work是接口,并存在多个类如struct WorkImpl。此外还有多种类型,如struct A和struct B,它们相互作用。在我的情况下,它们也是模板化的,不能是多态的。问题是如何将工作调用“转发”给Work

    0热度

    3回答

    我介绍了抽象动物类是其子类的抽象actor类。我现在面临的问题是,兔类动作方法(动物的一个子类)不起作用。 我收到以下错误 “兔子不是抽象的,在动物不重写抽象方法act(java.util.List<Actor>)” 我认为,在兔子的行为方法狐狸会覆盖在动物的行为方法和演员。我如何解决这个问题? 下面是在Actor类的抽象方法 abstract public void act(List<Actor

    1热度

    2回答

    我正在浏览这个页面,只是玩它提供的例子。 http://docs.oracle.com/javase/tutorial/java/generics/bridgeMethods.html 我使用Java 8 根据本教程页面,则ClassCastException应在该行200被抛出,但实际上它是较早抛出 - 在标记为100为什么行? !该教程是否过时(不适用于Java 8)? 然后,我问的n所有方法

    1热度

    1回答

    假设我保持T某一类的子类,的注册表: public class ClassRegistry<T> { Set<Class<? extends T>> klasses; ... public void register(Class<? extends T> klass) { klasses.add(klass); } 你与像registry.r

    7热度

    2回答

    我在回顾Java泛型上的一个Oracle路径,标题为“Effects of Type Erasure and Bridge Methods”,并且我无法说服自己给出解释。好奇的是,我在本地测试了这些代码,甚至无法重现线索解释的行为。下面是相关代码: public class Node<T> { public T data; public Node(T data) { this