Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit d5b982c

Browse files
Merge pull request #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)

AltStyle によって変換されたページ (->オリジナル) /