java层面List<Integer>与List<Double>是两个不同的类型

最近在看《深入理解java虚拟机特性》,谈到擦除法实现泛型丧失了泛型思想的优雅!我就想为什么下面这段代码可行

    ```java
            import java.util.ArrayList;

    public class Test {
public static String method(ArrayList<String> list) {
    System.out.println("invoke method(ArrayList<String> list)");
    return "";
}

public static int method(ArrayList<Integer> list) {
    System.out.println("invoke method(ArrayList<Integer> list)");
    return 1;
}

public static void main(String argc[]) {
    method(new ArrayList<String>());
    method(new ArrayList<Integer>());
}

}

而这段就不行呢
java
import java.util.ArrayList;

public class Test {
public static String doSomething(int a){
    return "";
}
public static Double doSomething(int a){
    return 1.0;
}


public static void main(String argc[]) {
  doSomething
}

}
```

            不是在字节码中都存了他们的特征标签(包含返回值的),既然不同,为什么不能重载呢?于是我网上查了一下,是**因为Java虚拟机规范和Java语言规范不同,两者是分开的**   。

1个回答

新版的java也支持协变与逆变了
https://www.cnblogs.com/en-heng/p/5041124.html

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
比较两个list的不同
java 如何比较两个list的不同
一个函数 形参是List类型 如何实现不同类型如:List和List两种功能
一个函数 形参是List类型 如何实现List和List两种功能rn如[code=java]static List remDup(List list) [/code]rn和[code=java]static List remDup(List list) [/code]rn两个函数作用是相同的,但是无法通过上述重载。rnrn问题是list迭代时候需要用到不止it.next(),所以需要专门的变量来放置it.next(),可在变量声明时需要声明类型,如果不能重载,就不知道怎么判断it.next()的类型;rnrn初学者……大神勿喷
java 的List add 不同类型的对象
问题:今天看java的list ,list后面的<> 里面可以填多种类型,但是如果不填写类型那就默认为 Object 类型。 所有我门 add 到 list 里的 数据都会被转换成 Object 类型。而当我门再从list 中取出该数据时,就会发现数据类型已经改变。解答Object类是所有Java类的祖先。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。 在不明确给出
不同类型的list赋值问题
有两个list List a 和 List brnrnDate的元素在Date1中都有rn如何把List b中List a有的元素的值追加给他rnrnb的内容rn "mary", "2","b", "2"rn "ana", "29","x", "2"rna的内容rn "a", "1";rn "c", "1";rnrn结果为a "a", "1";rn "c", "1";rn "b", "2"rn "x", "2"rnrnrnrnpublic class Datarnrn private String name;rn private String no;rnrn public Data (String n,String a,String x,String y)rn rn this.name = n;rn this.no= a;rn rnrn public void setName(String n) this.name = n; rn public void setNo(String a) this.no= a; rn public String getName() return name; rn public String getNo() return no;rnrnrnrnrnpublic class Data1rnrn private String name1;rn private String no1;rn private String name;rn private String no;rnrn public Data1 (String n,String a,String x,String y)rn rn this.name = n;rn this.no= a;rn this.name1 = x;rn this.no1= y;rn rnrn public void setName(String n) this.name = n; rn public void setNo(String a) this.no= a; rn public String getName() return name; rn public String getNo() return no;rn public void setName1(String x) this.name1 = x; rn public void setNo1(String y) this.no1= y; rn public String getName1() return name1; rn public String getNo1() return no1;rnrn
不同类型的List找交集
[code=C#]rn情况1:rnvar pList1 = new Listrnrn new Product ID = 1, SubID = "AA", Price = 0.1 ,rn new Product ID = 2, SubID = "BB", Price = 0.2 ,rn new Product ID = 3, SubID = "BB", Price = 0.4 ,rn new Product ID = 4, SubID = "AA", Price = 0.7 ,rn new Product ID = 5, SubID = "CC", Price = 0.3 rn;rnrnvar pList2 = new Listrnrn new SubProduct ID="AA" ,rn new SubProduct ID="BB" rnrnrn情况2:rnvar pList1 = new Listrnrn new Product ID = 1, SubID = "AA", Price = 0.1 ,rn new Product ID = 2, SubID = "BB", Price = 0.2 ,rn new Product ID = 3, SubID = "BB", Price = 0.4 ,rn new Product ID = 4, SubID = "AA", Price = 0.7 rn;rnrnvar pList2 = new Listrnrn new SubProduct ID="AA" ,rn new SubProduct ID="BB" ,rn new SubProduct ID="CC" rnrn[/code]rnrn问题:rn 1.情况1中pList1中有3个SubID,但是pList2中只有两个,所以pList1中的SubID="CC"为异常数据,需剔除.rn 2.情况2中pList1中只有2个SubID,pList2中有三个,且pList2中的ID = "CC"的在pList1中的记录Count为零,需剔除.rnrn现在用的最普通的内嵌循环, - -rn[code=C#]rnIList tmpPList = new List();rnforeach(SubProduct sp in pList2)rnrn var q = qList1.Where(s => s.SubID == sp.ID).Count() > 0rn if (q.Any())rn rn tmpPList.Add(q);rn rnrnrn//为什么要建立一个临时列表,因为后续要对这个列表进行重组,rn//现在的更改决定了后面的列表更新内容rnif(!tmpPList.Any())rnrn foreach(Product tp in tmpPList)rn rn tmpList.Remove(tp);rn //do somethingrn rnrn[/code]rnrn请教有效率高点的写法,因为实际应用中这两个List的数据量比较大.
java找出两个List中不同的值
List&lt;String&gt; list1 = new ArrayList&lt;String&gt;(){{add("a");add("b");add("c");add("d");}}; List&lt;String&gt; list2 = new ArrayList&lt;String&gt;(){{add("e");add("f");add("d");add("c");add(...
定时任务&&找出两个list的不同
[code=&quot;java&quot;]/*-------------------------application-context.xml------------------------------*/ ...
浅析List中Integer类型比较的错误
相信很多人都会有想用List集合存int数据的时候(或许是用于后续遍历),初始我的第一反应是下图,经验证会报错,虽要将int存入,但初始化时需要初始为Integer类型。正确的初始化如下实际上是由于我的软件构造实验课lab1中一个困扰我近三个小时的程序bug,让我想到了开这样一个测试程序说明这个问题如上图(即我的测试程序),按逻辑List中存入了同一个int类型的数据,必定是相等的,程序也没有报错...
获取两个List的不同元素
/** * 获取两个List的不同元素 * * @param list1 * @param list2 * @return */ private static List&amp;lt;String&amp;gt; getDiffrent4(List&amp;lt;String&amp;gt; list1, List&amp;lt;String...
List<Integer>数字集合排序
工作中有时候用到List&amp;lt;Integer&amp;gt;排序,记录一下。 直接调用 sortList 方法即可,基于内存的排序,调用后List中的内容就是已经排好序的了 /** * 数字集合排序 * @param list */ public static void sortList(List&amp;lt;Integer&amp;gt; list){ C...
合并两个类型相同的List
public static void main(String[] args) { /*测试合并两个类型相同的list*/ List&amp;lt;String&amp;gt; list1 = new ArrayList&amp;lt;String&amp;gt;(); List&amp;lt;String&amp;gt; list2 = new ArrayList&amp;lt;String&amp;gt;(); //给list1赋值 li...
java 两个list合并
List接口中,有一个方法addAll,可以实现合并list。 List&lt;String&gt; a=new ArrayList&lt;String&gt;(); List&lt;String&gt; b=new ArrayList&lt;String&gt;(); b.addAll(a)
基本数据类型double[]与List的转换
这里写自定义目录标题把double[]存入Json的准备工作List&lt;&gt; ,double[ ], Double[ ]数据类型特性分析List转double[ ]double[ ] 转List 把double[]存入Json的准备工作 最近想将double[] 用json格式保存,发现json格式只能解析List&lt;&gt;,在二者转换过程中,掉进了List的陷阱,特总结如下,希望对...
List 怎么转 List>类型
直接写貌似不行,怎么写好呢?
List类型
我们在实际的Python开发过程中,不可避免的需要与各种数据库进行交互,这些数据库包括关系型数据库与非关系型数据库,其中最具代表性的是Mysql、Mongodb和Redis,学习本套课程,大大提升你的开发效率
List保存的是值类型的int还是Integer?
刚从Java转过来。rnrnJava泛型容器存放的都是包装类。C#的呢? List存放的是int还是Integer? List和List有区别吗?rn谢谢。
java红包算法·返回List<Double>
/*红包处理过程中出现0.00以后的尾数处理办法。 先获取List数据可由red(int number, double total, double min) 获取。 获取后用red_all_count(List red_all_count)可以获取总金额,进行一个对比,红包数少误差小,生成的红包数越多,误差可能越大。 */ //测试 public static void main(Str
两个list合成一个list,新的list里的元素是list还是map.
两个list合成一个list,新的list里的元素是list还是map.rn有哪些法子合成一个list,请大家指点下。
list中如何存入不同类型的指针
有一个父类是动物 Animal ,有两种不同的子类,一个类是鸟 Bird,一个是鱼 Fish,如何将这两种类的指针都存入链表 rn定义链表 rnList lrn请问接下来如何操作
C# List<>中遍历不同类型的数据???
List person = new List(); rnPerson p1 = new Person("张三", 26, Gender.Male, "看书"); rnPerson p2 = new Person("张四", 55, Gender.Male, "钓鱼"); rnrnrnList stu = new List(); rnStudent s1 = new Student("李四", 26, Gender.Male, "电影", "S2T11"); rnStudent s2 = new Student("李五", 20, Gender.Male, "电脑", "S2T11"); rnrnrnList tch = new List(); rnTeacher t1 = new Teacher("王五", 26, Gender.Male, "音乐", "S1,S2,Y2"); rnTeacher t2 = new Teacher("王六", 30, Gender.Male, "音乐", "S1,S2"); rnrnperson.Add(p1); rnperson.Add(p2); rnperson.Add(s1); rnperson.Add(s2); rnperson.Add(t1); rnperson.Add(t2); rn/////////////用for遍历出Student类型和Teacher类型/////////////////// rnfor (int i = 0; i < person.Count; i++) rn rnif (person[i] is Student) rn rn((Student)person[i]).SayHi(); rn rnelse if (person[i] is Teacher) rn rn((Teacher)person[i]).SayHi(); rn rn rn////////////////////////////// rn怎么用foreach来遍历出Student类型和Teacher类型 rn替换上面for的遍历
String类型根据不同分隔转为list
一、解决方法:  List idList = Arrays.asList(phones.split(&quot;;&quot;));   例子是根据;分号进行分割,其中phones 是要转为List 带有分隔符的字符串。
Java 将 string类型与list类型相互转换
代码实现String ids = "111,222,333,444"; List<String> list = new ArrayList<>(); String str[] = ids.split(","); list = Arrays.asList(str);实现思路先将string类型的字符串用split()函数进行分割成string类型的数组,再利用aslist()将数组转化为list。
在不同的两个JSP页面如何传递 " List" 的问题?
我在一个jsp页面写了一个List cq = new ArrayList();我想在另一个jsp页面取出这个list里面的所有值,不知道是不是用session ? 高手们帮帮忙,着急!!! rn
快速计算两个List的不同元素
public class ListUtil { /** * 利用map计算两个list的不同元素 * 时间复杂度2(n+m) * 如果long List在前,map#get次数较多,影响性能 * * @param longList 长度大的列表 * @param shortList 长度小的列表 * @param T>
c#:两个list不同元素,值类型,对象类型
基本值类型 public static List&amp;lt;T&amp;gt; GetListDiff&amp;lt;T&amp;gt;(List&amp;lt;T&amp;gt; listA,List&amp;lt;T&amp;gt; listB) { List&amp;lt;T&amp;gt; ret = new List&amp;lt;T&amp;gt;(); if (listA.Count &amp;gt; listB.Count) ...
多线程找出两个list之间不同的元素
突然之间,给自已想到了一题,找出两个list之间的不同元素。 尝试了用list循环 或 用hashSet 实现,但效率都太低了点。 如是尝试了一下用多线程去实验一下,效率大大提升 :P 。。 [code=&quot;java&quot;] import java.util.ArrayList; import java.util.List; /** * @author gah * *...
两个list比较 取不同的对象
比较list得到不同的对象 慎重注意list的大小变化和索引 精简算法
高效寻找两个List中不同的值
想看看前辈们有没有更优化更效率的查找办法?rn[code=csharp]rnList ids = new List();rnids.add(1);rnids.add(2);rn[/code]rnrn[code=csharp]rnList ids1 = new List();rnids1.add(1);rnids1.add(2);rnids1.add(3);rn[/code]rnrn这个时候应该是3查找出来
对比两个list , 将不同的记录找出来
实体类: Sort, 属性: SortId(int), Name(string), OrderBy (int)rnrnList newList = xxx; rnList oldList = xxx; rn如何将 两个List中SortId相同, 而OrderBy不同的记录找出来?rnrn请各位大侠支招.rn
QT:获取两个list中的不同值
QStringList result; for(QString str:QStringList A) { if(!B.contains(str)) { result&lt;&lt;str; } } return result; ...
请教,求两个List的不同元素的个数
我有两个字符串,每个字符串都由“,”相隔的很多个数字组成的。rn把两个字符串转换为List,然后对比不同元素的个数。rn请问有什么高效率的方法吗?rn我使用以下的方法,但是好像并没有得到正确的结果。rn[code=C#] public static int GetDiff(List oldkey,List newkey)rn rnrn for (int i = 0; i < newkey.Count; i++)rn rn if (oldkey.Contains(newkey[i]))rn newkey.RemoveAt(i);rn rnrn return newkey.Count;rn [/code]rnrn然后我用两个字符串测试了一下:rn[code=C#]rn//字符串太长,我在回文给出rnstring oldstr = "";rnstring newstr = "";rnrn//上面两个字符串的内容一样rn//下面获取两个字符串的list的不同元素个数rnint diffnum = Setting.GetDiff(new List(oldstr.Split(new string[] "," , StringSplitOptions.RemoveEmptyEntries)),new List(newstr.Split(new string[] "," , StringSplitOptions.RemoveEmptyEntries)));rnrn[/code]rnrn理论上得到的结果应该是0才对,但是实际上我的程序最后得出来的diffnum = 160.rn麻烦大家帮我看看哪里有问题。rn或者提出更好的解决方法。rn谢谢!rn
两个不同list集合进行合并
rnrn 表1rnrn Customerrn 编号 名称 年龄rn CustID CustName CustAgern 1 张三 20rn 2 李四 22rn 3 王五 21rnrn 表2rnrn Carrn 编号 车牌号 关联idrn CarID CarCode CustIDrn 1 京13456 1rn 2 京33456 2rn 3 京46656 2rn 4 京98756 3rn 5 京85256 1rnrn 现在查询这两个表,返回两list集合,如何将这两个list合并为一个list集合?rnps:由于一些限制,需要先查询Customer表,再根据id查询car表,所以结果有两个list集合,然后将这两个list合并为一个,请问有解决的方法吗?
高效查询两个list的不同元素
public class DifList { public static void main(String[] args) { List&amp;lt;String&amp;gt; a = new ArrayList(); a.add(&quot;1&quot;); a.add(&quot;2&quot;); a.add(&quot;3&quot;); a.add(&quot;4&quot;); ...
高效筛选两个List中的不同的元素
问题记录: 开发过程中,需要把两个List中不同的元素筛选出来,这两个List的数据量都很大,如果按照一般的方法,分别去遍历两个List,然后分别对每一个元素做比较,时间消耗将会达到m*n,处理效率显然不尽人意。 解决思路: 使用一个Map来对2个List中的元素进行计数: 即把List的元素作为Map的Key,Entry的Value为Integer类型,用于记录元素在两个集合中出
Python list类型的str转换为list
a=[1,2,3,4,5,6] b=str(a) print(b) print(type(b)) print(eval(b)) print(type(eval(b)))
Python中将字符串类型list转换成list
Python中将字符串类型list转换成list python读取了一个类似list的字符串形式为’[168, 169, 170, 171, 172, 174, 185, 187, 159]’,想将其转换成list类型,有两种方式: 1. 使用ast包:ast是python源码到字节码的一种中间产物,借助ast模块可以从语法树的角度分析源码结构。 代码如下: data_json = ast.lit...
不知道list类型的情况下,创建List
[code=C#]rnobject obj = Assembly.Load("my.DAL").CreateInstance("my.DAL." + str);//得到该类型的实例rnlist mylist=new list如何创建List呢rn[/code]
怎么把 List 转换为 List 类型?
rn List tempStr = new List() "21", "232", "12" ;rn rn List tempNum=............................?
Python代码分析,对于列表使用list += list 和 list = list + list的不同
#coding=utf-8 ''' def selfAdd(a): #a += a a = a + a print("调用函数之后a的地址映射:%s"%id(a)) id(a) a_int = 1 print("调用函数之后a的地址映射:%s"%id(a_int)) print(a_int) selfAdd(a_int) print(a_int
list list = new list();
int temp = 1;rna[i]^ = temp;rna[i] = temp;rn上面这个有什么不同呀?rnrn2.rnrnlist list = new list();rnrnArrayList a= new ArrayList();rnrna.add(5);rnrnlist.add(a[0]);rn上面这个有什么错误呀?rnrn谢谢rnrn
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池