当前位置: 技术问答>java相关
大家认为Java是否有必要加入模版呢?
来源: 互联网 发布时间:2015-10-17
本文导语: 有两年没有看C++了,最近狂看了几个月C++,发现自己的知识真的过时了。C++还真的是很有活力,现在的C++已经不是我上大学时候的C++了。 加入了高级模版特性的C++,用起来觉得非常的高级。更重要的是没有运行时开...
有两年没有看C++了,最近狂看了几个月C++,发现自己的知识真的过时了。C++还真的是很有活力,现在的C++已经不是我上大学时候的C++了。
加入了高级模版特性的C++,用起来觉得非常的高级。更重要的是没有运行时开销。大家认为Java是不是也应该加入模版呢?
加入了高级模版特性的C++,用起来觉得非常的高级。更重要的是没有运行时开销。大家认为Java是不是也应该加入模版呢?
|
java之所以取消了模板,因为java和c相比,java有单根继承的特性
(所有的java类都继承object,如果你不明确写extends那么默认,继承object,
这样作的好处是如果你定义一个object的引用,那么它可以接受所有的对象。
比如myVvector.add(Object o);,想想模板的作用是什么。
很多时候因为type的改变,要从类的模板定义一个新的模板类。来适应type的改变。java的单根特性可以取代模板的一部分作用的。
但是java这样设计,方便了开发者。也牺牲了部分性能,由于object可以接受所有的class对象引用,所以也许你需要的是一个int对象的Vector,但放进去一个string对象的引用也不会编译期错误,很多bug会不好查。:((
我的了解就这些了。不一定对的。参考而已。
(所有的java类都继承object,如果你不明确写extends那么默认,继承object,
这样作的好处是如果你定义一个object的引用,那么它可以接受所有的对象。
比如myVvector.add(Object o);,想想模板的作用是什么。
很多时候因为type的改变,要从类的模板定义一个新的模板类。来适应type的改变。java的单根特性可以取代模板的一部分作用的。
但是java这样设计,方便了开发者。也牺牲了部分性能,由于object可以接受所有的class对象引用,所以也许你需要的是一个int对象的Vector,但放进去一个string对象的引用也不会编译期错误,很多bug会不好查。:((
我的了解就这些了。不一定对的。参考而已。
|
发个例子
import java.util.*;
interface Compare {
boolean lessThan(Object lhs, Object rhs);
boolean lessThanOrEqual(Object lhs, Object rhs);
}
//////////////////////////////////////////////////////////////////////
class SortVector extends Vector {
private Compare compare; // To hold the callback
public SortVector(Compare comp) {
compare = comp;
}
public void sort() {
quickSort(0, size() - 1);
}
private void quickSort(int left, int right) {
if(right > left) {
Object o1 = elementAt(right);
int i = left - 1;
int j = right;
while(true) {
while(compare.lessThan(
elementAt(++i), o1))
;
while(j > 0)
if(compare.lessThanOrEqual(
elementAt(--j), o1))
break; // out of while
if(i >= j) break;
swap(i, j);
}
swap(i , right);
quickSort(left, i-1);
quickSort(i+1, right);
}
}
private void swap(int loc1, int loc2) {
Object tmp = elementAt(loc1);
setElementAt(elementAt(loc2), loc1);
setElementAt(tmp, loc2);
}
}
//////////////////////////////////////////////////////////////////////////
public class StringSortTest {
static class StringCompare implements Compare {
public boolean lessThan(Object l, Object r) {
return ((String)l).toLowerCase().compareTo(
((String)r).toLowerCase())
import java.util.*;
interface Compare {
boolean lessThan(Object lhs, Object rhs);
boolean lessThanOrEqual(Object lhs, Object rhs);
}
//////////////////////////////////////////////////////////////////////
class SortVector extends Vector {
private Compare compare; // To hold the callback
public SortVector(Compare comp) {
compare = comp;
}
public void sort() {
quickSort(0, size() - 1);
}
private void quickSort(int left, int right) {
if(right > left) {
Object o1 = elementAt(right);
int i = left - 1;
int j = right;
while(true) {
while(compare.lessThan(
elementAt(++i), o1))
;
while(j > 0)
if(compare.lessThanOrEqual(
elementAt(--j), o1))
break; // out of while
if(i >= j) break;
swap(i, j);
}
swap(i , right);
quickSort(left, i-1);
quickSort(i+1, right);
}
}
private void swap(int loc1, int loc2) {
Object tmp = elementAt(loc1);
setElementAt(elementAt(loc2), loc1);
setElementAt(tmp, loc2);
}
}
//////////////////////////////////////////////////////////////////////////
public class StringSortTest {
static class StringCompare implements Compare {
public boolean lessThan(Object l, Object r) {
return ((String)l).toLowerCase().compareTo(
((String)r).toLowerCase())
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!