sat*_*sat 5 java android casting
我最近在Android上进行了很多编码,虽然我对JAVA很满意,但是缺少一些关于在那里使用的核心概念的想法.
我很想知道这两个代码之间是否有任何性能差异.
第一种方法:
//Specified as member variable.
ArrayList <String> myList = new ArrayList <String>();
Run Code Online (Sandbox Code Playgroud)
并使用as String temp = myList.get(1);
第二种方法:
ArrayList myList = new ArrayList(); //Specified as member variable.
Run Code Online (Sandbox Code Playgroud)
和使用
String temp1 = myList.get(1).toString();
Run Code Online (Sandbox Code Playgroud)
我知道它的铸造.第一种方法是否比第二种方法具有很大的优势,大部分时间在实际编码中我必须使用第二种方法,因为arraylist可以采用不同的数据类型,我最终指定
ArrayList <Object> = new ArrayList <Object>();
Run Code Online (Sandbox Code Playgroud)
或更通用的方式.
简而言之,如果它存在的话,没有值得担心的性能差异.通用信息无论如何都不会存储在运行时,因此实际上并没有其他任何事情可以减慢速度 - 正如其他答案所指出的那样,它甚至可能更快(尽管假设它假设稍慢,我仍然主张使用泛型.)在这个层面上养成不那么多考虑性能的习惯可能是好的.可读性和代码质量通常比微优化更重要!
简而言之,泛型将是首选,因为它们可以保证类型安全并使您的代码更清晰.
就你在一个arraylist中存储完全不同的对象类型(即与你正在使用的某些继承层次结构无关)这一事实而言,这几乎肯定是你设计的一个缺陷!我可以算一下我做过这一次的时间,这总是一个暂时的躲避.
泛型不是具体的,这意味着它们会在运行时消失.出于以下几个原因,首选使用泛型:
| 归档时间: |
|
| 查看次数: |
2754 次 |
| 最近记录: |