学习JAVA 一个半月时间,遇到一些基本问题, 烦请高手们的解答下或菜鸟们共同学习下.
以前一此在搞C++, 最近一个半月遇到不少问题,有一些自己想明白了,有一些还一直没搞清楚,将自己平时对问题的总结一个来向大家请教,可能有一些很低级,还请在高手看了我的这些问题后,感觉我在学JAVA哪些方面出了问题,为什么不能自己解决这些问题,也可以推荐哪些书比较适合我,先谢谢大家了.
问题一:有关Java 后台使用程序的构架?
1. 使用 Java 写一个服务程序,没有任何UI, 有必要使用现成的一些框架吗?
如 Structs 或 Spring, 我现在访问数据库使用的是Hibernate, 如果有必要使用, 现成的比较成熟的框架哪一个对我这种情况比较适用?
问题二:JAVA 如何得到程序被退出的消息或者还是无法得到?
比如 Linux 做为服务后,在服务被 stop 时,能得到对应的响应吗?
问题三: JAVA 对象的内容分配问题
JAVA 中使用 List 和 Map 对象会增加内容使用吗?
比如String str1; Object o1;
使用一个List 做增加 list.push(str1); list2.push(o1);
同时使用一个MAP做增加 map.push(str1, o1);此时在系统的内存中是一份 str1 ,o1 还是二份?
问题四:JAVA中有没有类似C++中的 pair 类?
相当一个永远只有一个元素的 map,如果只有一个元素用map不太方便,在改变值的时候还得先调用 clear 再put.
问题五.JAVA中有C++类似模板的替代写法吗
在C++中有一个模板类
template<class T>
class DataPool {
T a;
void setdata(T b) {
a = b;
}
T getData() {
return a;
}
}
使用的时候 DataPool<int> 表示为 int 型的, DnpPool<float> 表示为 float.
在JAVA中是不是以下写法,这样每次使用的时候都要做强行转换,有没有更好的实现方法不用强行转换吗?
public class DataPool {
Object a;
public void setData(Object b) {
a = b;
}
public Object getData() {
return a;
}
}
问题五.JAVA中有无类拟C++中一些使用函数指针能实现的功能,描述如下:
JAVA中如何能不能通过一些手段实现类似下面功能的函数(C++的类成员函数指针可以办到);
1. 比如 class A {
...
public :
bool isFunctionA();
bool isFunctionB();
…
}
static void doByFuncA(A a) {
1. 先做一些相同处理;
2. 再由 a 中的 isFunctionA() 的值来做不同处理.
3. 再做其它相同处理.
}
static void doByFuncB(A a) {
1. 先做一些相同处理;
2. 再由 a 中的 isFunctionB() 的值来做不同处理.
3. 再做其它相同处理.
}
doByFuncA和 doByFuncB 除了第二步不同以外,其它的完全相同,
当然你可以通过再增加一个参数 doByFunc(A a, int type);来根据不同的 type 来做不同的事情
这样在type 和 isFunctionA 之间就要人为去定义一个约定,不是最好的解决办法.
问题: 在JAVA中可不可以通过 doByFunc(A a, String functionName),直接由 functionName就得到函数的写法.
如 doByFunc(a, "isFunctionA"); 这样就可以直接调用到 a.isFunctionA() 而不用在程序中写
doByFunc(A a, String funcName) {
if (funcName == "isFunctionA") {
result = a.isFunctionA();
}
}
...
在C++中的实现方法是
void doByFunc(A a, bool(A::*pFunc)()) {
...
if (a.*pFunc()) { //调用类成员的函数指针
...
} else {
…
}
...
}
调用时:
doByFunc(a, &a::isFunctionA); //表示使用 A 函数
doByFunc(a, &a::isFunctionB); //表示使用 B 函数
以后再增加了 isFunctionC 只要参数和返回值和 A, B 相同还是可以调用 doByFunc(a,&a::isFunctionC) 而不用改到doByFunc函数.