Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:强制转换列表<&燃气轮机;毫无预兆_Java_Generics_Casting - Fatal编程技术网

Java:强制转换列表<&燃气轮机;毫无预兆

Java:强制转换列表<&燃气轮机;毫无预兆,java,generics,casting,Java,Generics,Casting,假设我们有下面的示例代码 头等舱: public class Template<T> { private final T val; public Template(T val) { this.val = val; } public T getVal() { return val; } } 公共类模板{ 私人终审法院; 公共模板(T val){ this.val=val; } 公共T getVal(){ 返

假设我们有下面的示例代码

头等舱:

public class Template<T> {

    private final T val;

    public Template(T val) {
        this.val = val;
    }

    public T getVal() {
        return val;
    }
}
公共类模板{
私人终审法院;
公共模板(T val){
this.val=val;
}
公共T getVal(){
返回val;
}
}
二等舱:

import java.util.ArrayList;
import java.util.List;

public class App {

    public static void main(String[] args) {

        List<?> templates = new ArrayList<Template<?>>();

        // How can I cast this without warning?
        List<Template<?>> castedTemplates = (List<Template<?>>)templates;

        // further code...
    }
}
import java.util.ArrayList;
导入java.util.List;
公共类应用程序{
公共静态void main(字符串[]args){

List templates=new ArrayList>castedTemplates=(List如果您可以将其定义为
List>();

如果您可以将其定义为
List>();

如果您可以将其定义为
List>();

为什么您可以将其定义为
List>()

你做不到

这就是问题所在——编译器必须生成这些警告,以便它们警告您,您所做的事情并不完全符合规定

@SuppressWarnings(“unchecked”)
应该抑制它们(如果这是您明确想要的)

我知道这个答案听起来太琐碎了,但这是真的。

你做不到

这就是问题所在——编译器必须生成这些警告,以便它们警告您,您所做的事情并不完全符合规定

@SuppressWarnings(“unchecked”)
应该抑制它们(如果这是您明确想要的)

我知道这个答案听起来太琐碎了,但这是真的。

你做不到

这就是问题所在——编译器必须生成这些警告,以便它们警告您,您所做的事情并不完全符合规定

@SuppressWarnings(“unchecked”)
应该抑制它们(如果这是您明确想要的)

我知道这个答案听起来太琐碎了,但这是真的。

你做不到

这就是问题所在——编译器必须生成这些警告,以便它们警告您,您所做的事情并不完全符合规定

@SuppressWarnings(“unchecked”)
应该抑制它们(如果这是您明确想要的)



我知道这个答案听起来太琐碎了,但它是真的。

你不能……猜测你将不得不接受这个警告。它不会停止编译,是吗?不,编译器只是报告了一个编译警告。如果你想正确使用泛型,那你为什么要在这里使用
呢?如果你不知道它,试试
对象pe.你不能……猜测你将不得不忍受警告。它不会停止编译,不是吗?不,编译器只是报告一个编译警告。如果你想正确使用泛型,那么为什么要在这里使用
呢?如果你不知道类型,试试
对象
。你不能……猜测你将不得不忍受警告。它不会停止编译,不是吗?不,编译器只是报告了一个编译警告。如果你想正确使用泛型,那么为什么要在这里使用
呢?如果你不知道对象的类型,请尝试使用
对象。你不能……猜测你将不得不接受警告。它不会停止编译,不是吗?不,是comp如果你想使用泛型,那么你为什么要使用<代码>?/代码>这里?如果你不知道这个类型,试试<代码>对象< /代码>。我个人不会认为这是一个答案……它被当作一个问题来表达,尽管我确实理解它的修辞性质。在这个例子中,这当然是一个解决方案。当然,这是正确的,但它不是我的真实世界代码中的一个解决方案,因为<代码>列表>代码>类型来自一个不可改变的接口。我个人不会认为这是一个答案……它是一个问题,尽管我确实理解它的修辞性质。Uxonith Agreed,应该使用一个注释。在这个例子中,这当然是一个解决方案。当然,这是正确的。但是这不是我的真实世界代码中的一个解决方案,因为<代码>列表>代码>类型来自一个不可改变的接口。我个人不会认为这是一个答案……它是一个问题,尽管我做了。UXONITE同意,应该使用一个注释。在这个例子中,这当然是一个解决方案。当然,这是对的。但是这不是我的真实世界代码中的一个解决方案,因为<代码>列表>代码>类型来自一个不可改变的接口。我个人不会认为这是一个答案……这是非常有意思的。作为一个问题,虽然我确实理解它的修辞性质。@Uxonith同意,应该使用注释。在本例中,这肯定是一个解决方案。当然,这是正确的。但在我的真实代码中,这不是一个解决方案,因为
列表
类型来自一个不可更改的接口。