- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
"?-6ren"> "?-此代码会导致 javac 出现编译错误(但值得注意的是,不会出现 Eclipse 4.2.2!): public interface Foo { } class Bar implements Foo>-6ren">
此代码会导致 javac 出现编译错误(但值得注意的是,不会出现 Eclipse 4.2.2!):
public interface Foo<T> {
}
class Bar<T> implements Foo<Iterable<T>> {
}
class Test {
void test(Foo<? extends Iterable<? extends String>> foo) {
Bar<?> bar = (Bar<?>) foo;
}
}
javac 的错误是这样的:
Foo.java:9: error: inconvertible types
Bar<?> bar = (Bar<?>) foo;
^
required: Bar<?>
found: Foo<CAP#1>
where CAP#1 is a fresh type-variable:
CAP#1 extends Iterable<? extends String> from capture of ? extends Iterable<? extends String>
将类型转换更改为 (Bar) foo
(即使用原始类型)允许代码编译,更改 foo
的类型也是如此简单地 Foo<? extends Iterable<?>>
.
编辑:有趣的是,这个简单的更改导致 Eclipse 拒绝,但 javac 接受:
void test(Foo<Iterable<String>> foo) {
Bar<?> bar = (Bar<?>) foo;
}
而且,Eclipse 和 javac 都拒绝这个:
void test(Foo<Iterable<? extends String>> foo) {
Bar<?> bar = (Bar<?>) foo;
}
最佳答案
你的代码是合理的,应该编译:你正在缩小静态类型 Foo
至 Bar
同时扩大泛型类型 ? extends Iterable<? extends String>
至 ?
, 其中顶级 ?
是通配符捕获。这是一个经过检查的转换,它应该在没有警告的情况下编译。
你应该 submit an Oracle bug .我试图搜索相应的错误报告,但 this old closed ticket是我能找到的最接近这个问题的(IMO Oracle bug 数据库很难搜索)。有机会我会搜索更多,因为这个 javac 问题感觉很熟悉。
关于java - 为什么这里不允许转换为 "GenericType<?>"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17711180/
此代码会导致 javac 出现编译错误(但值得注意的是,不会出现 Eclipse 4.2.2!): public interface Foo { } class Bar implements Foo>
为什么它不显示真实类型(例如:List 而不是 List`1)? 这个(对我来说)奇怪的符号从何而来? 最佳答案 通用的 CLR 名称 List具有一种类型参数的是 System.Collection
尝试从 REST 服务获取实体。我的代码是这样的: 我想发送这样的对象:new GenericType>() {} 像这样的方法: public static Object callRestWithU
我需要检查一个通用对象是否为 null 或 default(T)。但是我有一个问题......目前我是这样做的: if (typeof(T).IsValueType) { if(default(T
我正在使用 C# 中的一些泛型。我有一个抽象泛型类: public abstract class BaseClass where T : Foo { } 其他类继承基类时指定类型参数。 我也在尝试为另
匹配 Java 方法返回类型的 Java 正则表达式是什么,如下所示: ArrayList 最佳答案 鉴于存在: Map, Map, Collection>> 首先,我想说这对于正则表达式来说是一个
我在使用通用类型动态访问对象属性时遇到问题。这是代码: import React, { useState } from 'react' function useForm(initialValues:
所以我有一个方法 [HttpGet('api/xxx/xxxx/xxx') public HttpResponseMessage DoMyWork(T obj) { } 是否可以将类型传递给调用?如果
我提前为糟糕的标题道歉,热切接受改进建议。 假设我有一个方法可以过滤 List基于 class 的任意类型, 返回一个新的 List其元素是作为给定类实例的输入列表的元素。这是一个简单的实现(是的,您
我需要在代码中以声明的形式获取泛型类型的名称。 例如:对于 List,我想获取字符串“List”。在这种情况下,标准属性 Type.Name 返回“List`1”。 编辑:示例已修复 最佳答案 使用内
我正在构建一个基于 Hooks 的 React 应用程序,也利用了 TypeScript。 我写了一个呈现列表的组件,其中包括 props , 预计 props.items , 哪个类型是泛型 T :
我的目的是编写一个辅助函数,其目的是根据 key 按字母顺序对对象数组(第一个参数)进行动态排序。作为第二个参数传递。 功能: interface GenericObject { [key: st
这是我的代码的第一部分: @Path("compute/{x}") @GET @Produces(MediaType.TEXT_PLAIN) // "text/plain" public List c
我正在使用泽西 Restful 应用程序。 我在将对象列表从 JSON 转换为对象时遇到以下错误。 Jersey 客户端代码 def itemList= clientResponse.getEntit
我想为javax.ws.rs.client.SyncInvoker编写代理: @Override public T get(GenericType responseType) {
有没有办法用泛型类型的 typeof 表达式创建属性? 以下代码仅部分有效: CSharpElementFactory factory = ... IClassDeclaration typeDecl
我想要获取代码 WebTarget targetBase = ... targetBase.path("some_path").request(MEDIA_TYPE).get(new GenericT
碰巧看到了 Collections.asList(...) 代码中的方法调用,但 Eclipse 似乎不理解这一点(使用我的配置)并将其显示为编译错误。 我的 Eclipse 配置错误吗?或者这不适用
我已经实现了以下类,并使用 REST 调用实现了一个搜索方法,获取给定类型 T 的对象列表。 public class AmapiService implements RestService
我正在开发 Resteasy。我将应用程序的 Maven 依赖项从 2.2.x 迁移到 3.0.x,突然间我发现大部分 API 都已弃用。所以这个迁移对我的代码和测试用例有影响,因为它在我的整个代码中
我是一名优秀的程序员,十分优秀!