![]() |
1
81
从我几次遇到这种“需要”的情况来看,它最终归结为以下结构:
常见的Java解决方案是通过
|
![]() |
2
101
最让我头疼的是无法利用跨多个泛型类型的多个分派。以下是不可能的,在许多情况下,这将是最好的解决方案:
|
![]() |
3
35
也,
抽象会少泄漏
-至少是那些可能对其类型参数的运行时信息感兴趣的人。今天,如果您需要任何类型的关于其中一个泛型参数类型的运行时信息,您必须传递其
|
![]() |
4
27
您可以在代码中创建泛型数组。
|
![]() |
5
17
这是一个老生常谈的问题,有很多答案,但我认为现有的答案是错误的。
|
![]() |
6
14
通过具体化,序列化将更加直接。我们想要的是
我们要做的是
在有些情况下,说这样的话会很有帮助
这些东西不常咬人,但一旦发生就会咬人。 |
![]() |
7
11
我对Java Geneircs的接触是相当有限的,除了其他答案已经提到的几点之外,书中还解释了一个场景 Java Generics and Collections ,作者Maurice Naftalin和Philip Walder,其中具体化的仿制药很有用。
例如,以下表单的声明无效。
这是因为 抓住 子句检查抛出的异常是否与给定类型匹配。此检查与实例测试执行的检查相同,并且由于类型不可重新定义,因此上述语句形式无效。 如果上述代码有效,则可以通过以下方式处理异常:
书还提到,如果java泛型定义的方式类似C++模板的方式 定义(扩展)它可能导致更高效的实现,因为这提供了更多 优化的机会。但是没有提供比这更多的解释,所以来自知识渊博的人的任何解释(指针)都会很有帮助。 |
![]() |
8
8
如果将泛型具体化,数组可能会更好地处理泛型。 |
![]() |
9
5
API看起来像
基本上,我认为它使编写API(而不仅仅是编写应用程序)变得更容易,因为您可以从对象中推断出更多信息,因此需要更少的配置……直到我看到注释被用于spring或xstream之类的东西,而不是大量的配置中,我才理解注释的含义。 |
![]() |
10
5
在编写能够反映参数化类型的框架时,还存在几种类型的问题。当然,这可以通过在运行时传递类对象来解决,但这会模糊API,并给框架用户带来额外负担。 |
![]() |
11
2
我的观点是,泛型是简单的 这节省了大量的重复铸造。 |
![]() |
12
1
|
![]() |
13
0
今天我发现了一个问题:没有具体化,如果你编写一个方法来接受一个varargs的泛型项列表。。。调用者可能认为他们是类型安全的,但不小心传入了任何旧的crud,并破坏了您的方法。
(注:我可能在这里犯了一个错误,但在谷歌上搜索“泛型变量”,上面的内容似乎正是你所期望的。使这成为一个实际问题的是类的使用,我认为-调用者似乎不太小心:() 例如,我正在使用一个范例,它使用类对象作为映射中的一个键(它比简单的映射更复杂,但从概念上讲,这就是正在发生的事情)。
e、 没有Java泛型中的具体化,它接受任何“类”对象。这只是之前代码的一个小小扩展:
上述方法必须在一个单独的项目中被写出数千次,因此人为错误的可能性变得很高。调试错误被证明是“不有趣的”。我目前正试图找到一个替代方案,但希望不大。 |