Skip to content

Commit d5b982c

Browse files
authored
Merge pull request giantray#80 from Lianghui2/master
first edition
2 parents 216ec85 + ca3ff7f commit d5b982c

6 files changed

+124
-0
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
为自动代码调整设置最大的行数?
2+
问题:我正在学习Java。如果我在Eclipse Helios里使用ctrl+shift+f的组合键,它会自动调整我的代码。一定程度下,它会改变行数。我想增加行数的最大值。应该怎么做?
3+
4+
回答,在偏好设置里,分别点击Java->Code Style->Fomatter->edit,在菜单栏Line Wrapping下会有行的宽度选择(Maximun line width).你将需要编辑你的代码轮廓。
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
加载JNI共享库失败(JDK)
2+
问题:当我试图打开Eclipse时,会弹出一个提示写着:
3+
Failed to load the JNI shared library "C:/JDK/bin/client/jvm.dll"`.
4+
然后,Eclipse会强制关闭。
5+
我做了以下几点:
6+
·我检查那个路径有没有存在什么,真的有存在。
7+
·我的Eclipse和Java SE Development Kit都是64位的。我检查我的系统,它能处理64位。
8+
·我也在Google和Stack Overflow搜索解决方法,我找到唯一的方法是下载一个32位版本的JDK和Eclipse。
9+
下载32位版本是我没办法下的办法。但还有其他的解决方法吗?
10+
11+
回答:
12+
你需要一个三件套:
13+
·64位的操作系统
14+
·64位的Java
15+
·64位的Eclipse
16+
17+
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
如何创建一个java泛型数组
2+
问题:
3+
由于Java泛型的实现机制,你不能这样写代码:
4+
pulic class GenSet<E>{
5+
private E a[];
6+
public GetSet(){
7+
a=new E[INITIAL_ARRAY_LENGTH]; //error:generic array creation
8+
}
9+
}
10+
在保证类型安全的情况下,我该如何实现创建一个Java泛型数组?
11+
我在一个Java论坛上看到是这样解决的:
12+
import java.lang.reflect.Array;
13+
14+
class Stack<T> {
15+
public Stack(Class<T> clazz, int capacity) {
16+
array = (T[])Array.newInstance(clazz, capacity);
17+
}
18+
19+
private final T[] array;
20+
}
21+
但我不懂发生了什么。有人能帮我吗?
22+
23+
回答:
24+
在回答之前,我得问你一个问题,你的GetSet是"checked"还是"unchecked"?
25+
什么意思呢?
26+
Checked的话,是强类型。GetSet明确地知道包含了什么类型的对象。
27+
比如,当要传递不是E类型的实参时,它的构造器会被Class<E>引数明确地调用,方法会抛出一个异常。参阅Collections.checkedCollection。
28+
在这种情况下,你应该这样写:
29+
public class GenSet<E> {
30+
31+
private E[] a;
32+
33+
public GenSet(Class<E> c, int s) {
34+
// Use Array native method to create array
35+
// of a type only known at run time
36+
@SuppressWarnings("unchecked")
37+
final E[] a = (E[]) Array.newInstance(c, s);
38+
this.a = a;
39+
}
40+
41+
E get(int i) {
42+
return a[i];
43+
}
44+
}
45+
Unchecked的话:弱类型。实际上要传递任何对象的实参时
46+
是没有类型检查的。
47+
在这种情况下,你应当这样写:
48+
public class GenSet<E> {
49+
50+
private Object[] a;
51+
52+
public GenSet(int s) {
53+
a = new Object[s];
54+
}
55+
56+
E get(int i) {
57+
@SuppressWarnings("unchecked")
58+
final E e = (E) a[i];
59+
return e;
60+
}
61+
}
62+
注意数组里的元素类型应当是可擦除的形参。
63+
public class GenSet<E extends Foo> { // E has an upper bound of Foo
64+
65+
private Foo[] a; // E erases to Foo, so use Foo[]
66+
67+
public GenSet(int s) {
68+
a = new Foo[s];
69+
}
70+
71+
...
72+
}
73+
所有的这些结果来自Java一个有名,存心,不足的泛型:它通过使用
74+
erasure实现,所以“泛型”类在运行时创建是不知道它的实参类型的,
75+
所以不能提供类型安全,除非某些明确的机制(比如类型检查)已经实现了。
76+
StackOverflow地址:
77+
http://stackoverflow.com/questions/529085/how-to-create-a-generic-array-in-java
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
如何将枚举转换成数组
2+
问题:
3+
假设我有一个枚举类是这样的:
4+
public enum Blah {
5+
A, B, C, D
6+
}
7+
我想要将枚举类的值转化成一个数组,比如"A"怎么可能是Blah.A.怎么有可能做到这点?我需要Enum.valueOf()这个方法吗?如果是这样,我应该怎么用他?
8+
9+
回答:
10+
是的,Blah.valuOf("A")将会给你Blah.A。
11+
valueOf()和values()这些静态方法是在编译时创建的,而且不会出现在源代码里。不过他们确实有出现在Javadoc,比如Dialog.ModalityType有这两个方法。
12+
stackoverflow链接:
13+
http://stackoverflow.com/questions/604424/lookup-enum-by-string-value
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
Java里什么是与C++的Pair<L,R>相等的?
2+
问题:
3+
Java里没有Pair是不是一个好理由?那什么会和C++这个结构相等呢?似乎1.6版本提供了一些类似的(比如AbstractMap.SimpleEntry),但这看起来很费解。
4+
5+
回答:
6+
在comp.lang.java.help的一个论坛上,Hunter Gratzner对于java的Pair结构给出了一些论点。主要的论点是Pair类不能传达出两个值的关系的语义(你怎么能知道第一和第二代表什么?)
7+
一个最好的校验是写一个非常简单的类,像Mike建议的,每一个应用上的pair类,Map.Entry都能很好的取代。
8+
总的来说,我建议是最好是一个Position(x,y)类,一个Range(begin,end)和一个Entry(key,value)类,而不是一个不能告诉我应该怎么做的广泛Pair(first,second)类。
9+
10+
stackoverflow的地址:
11+
http://stackoverflow.com/questions/156275/what-is-the-equivalent-of-the-c-pairl-r-in-java
12+

备忘.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
就是不行了

0 commit comments

Comments
 (0)