相关疑难解决方法(0)

C#和Java中的泛型与C++中的模板有什么区别?

我主要使用Java和泛型相对较新.我一直在阅读Java做出错误决定或者.NET有更好的实现等.

那么,泛型中C++,C#,Java之间的主要区别是什么?每个人的利弊?

c# c++ java generics templates

203
推荐指数
6
解决办法
5万
查看次数

Java泛型(通配符)

我有几个关于Java中通用通配符的问题:

  1. List<? extends T>和之间有什么区别List<? super T>

  2. 什么是有界通配符,什么是无界通配符?

java generics bounded-wildcard

106
推荐指数
3
解决办法
7万
查看次数

Java Generics:List,List <Object>,List <?>

有人可以尽可能详细地解释以下类型之间的差异吗?

List
List<Object>
List<?>
Run Code Online (Sandbox Code Playgroud)

让我更具体一点.我什么时候想用

// 1 
public void CanYouGiveMeAnAnswer(List l) { }

// 2
public void CanYouGiveMeAnAnswer(List<Object> l) { }

// 3
public void CanYouGiveMeAnAnswer(List<?> l) { }
Run Code Online (Sandbox Code Playgroud)

java generics

70
推荐指数
5
解决办法
4万
查看次数

克服Java中的类型擦除

我有一个客户类,我无法改变.

List<Integer> list1= Arrays.asList(1,2,3);
System.out.println("Total sum is:"+sum(list1));
printlist(list1);
List<Double> list2=Arrays.asList(1.0,2.0,3.0);
System.out.println("Total sum is:"+sum(list2));
printlist(list2);
Run Code Online (Sandbox Code Playgroud)

我在这里有业务逻辑

private static Object sum(List<? extends Number> list) {
    double sum = 0;
    for (Number i: list) {
        sum+=i.doubleValue();
    }     
    return sum;
}
Run Code Online (Sandbox Code Playgroud)

所以我想返回6表示整数,6.0表示双精度数.我怎样才能做到这一点?我想根据类型将类型转换为int或double,但由于类型擦除,所有信息都会丢失.有人能帮我吗?

java generics type-erasure

0
推荐指数
1
解决办法
118
查看次数

标签 统计

generics ×4

java ×4

bounded-wildcard ×1

c# ×1

c++ ×1

templates ×1

type-erasure ×1