由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Java版 - static final的问题
相关主题
[合集] java 得 inner class 有没有 static 有什么区别啊?interesting
Test your PC speed请教一个有关 inner class 的问题
关于inner class的继承问个题
请教一个简单的问题问一个java的面试题 (转载)
请问一个serialize class object下载运行的问题Apply lock on a class.
final static constants easy get cached?一个关于generics的问题
extending generic class , but not mentioning its parameterized type?Why inner classes can access only local final variables?
Re: help: how does the class Model$5.class come?java inner class - 初学者问
相关话题的讨论汇总
话题: static话题: xxx话题: final话题: class话题: private
进入Java版参与讨论
1 (共1页)
b***i
发帖数: 3043
1
private class xxx extends yyy {
private static final long serialVersionUID = 31L;
上面是正确的
private static final int[] myArray = {99,-1};却不对,说不能用static
为什么?如果数组没有static, 能保证xxx的不同对象不用分别分配myArray的内存吗?
f*******n
发帖数: 12623
2
没问题。谁说不能用?
b***i
发帖数: 3043
3
public class zzz {
private xxx ok=new xxx();
private class xxx {
private static final int[] aa={1,2,3};// this one

【在 f*******n 的大作中提到】
: 没问题。谁说不能用?
N***m
发帖数: 4460
4
我想是因为每个zzz object有自己不同的class xxx definition,
所以想按照你原来意思那么用的话,可以把xxx声明为static.

【在 b***i 的大作中提到】
: public class zzz {
: private xxx ok=new xxx();
: private class xxx {
: private static final int[] aa={1,2,3};// this one

f*******n
发帖数: 12623
5
这个是inner class的问题。inner class的static只可以是constant。
不放在inner class就行了

【在 b***i 的大作中提到】
: public class zzz {
: private xxx ok=new xxx();
: private class xxx {
: private static final int[] aa={1,2,3};// this one

B*****g
发帖数: 34098
6
what is constant in Java?

【在 f*******n 的大作中提到】
: 这个是inner class的问题。inner class的static只可以是constant。
: 不放在inner class就行了

f*******n
发帖数: 12623
7
http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls
Inner classes may not declare static members, unless they are constant
variables (§4.12.4), or a compile-time error occurs.
http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls
A variable of primitive type or type String, that is final and initialized
with a compile-time constant expression (§15.28), is called a constant
variable.
b***i
发帖数: 3043
8
就是想吧,每次initialize xxx的对象,不想生成那么多数组,因为就是常数,不会改
变。而且就在private class里面用,要把数组放进xxx里面非常合理。但是,xxx里面
确实要对外面的class对象进行操作,所以不能整个class都static.
挪数组到外面也可以。
有没有可能本来private class里面的final int[]就不会有多个copy?

【在 N***m 的大作中提到】
: 我想是因为每个zzz object有自己不同的class xxx definition,
: 所以想按照你原来意思那么用的话,可以把xxx声明为static.

N***m
发帖数: 4460
9

这句话什么意思?你难道不能new 两个xxx对象?

【在 b***i 的大作中提到】
: 就是想吧,每次initialize xxx的对象,不想生成那么多数组,因为就是常数,不会改
: 变。而且就在private class里面用,要把数组放进xxx里面非常合理。但是,xxx里面
: 确实要对外面的class对象进行操作,所以不能整个class都static.
: 挪数组到外面也可以。
: 有没有可能本来private class里面的final int[]就不会有多个copy?

B*****g
发帖数: 34098
10


【在 f*******n 的大作中提到】
: http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls
: Inner classes may not declare static members, unless they are constant
: variables (§4.12.4), or a compile-time error occurs.
: http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls
: A variable of primitive type or type String, that is final and initialized
: with a compile-time constant expression (§15.28), is called a constant
: variable.

m*****j
发帖数: 499
11
赞~

【在 f*******n 的大作中提到】
: http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls
: Inner classes may not declare static members, unless they are constant
: variables (§4.12.4), or a compile-time error occurs.
: http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls
: A variable of primitive type or type String, that is final and initialized
: with a compile-time constant expression (§15.28), is called a constant
: variable.

b***i
发帖数: 3043
12
就是说,内部的private class xxx 里面要对外面的class的非static变量进行操作,
所以不能把xxx设static。
只能把这些本来就是常数的数组拿到外围。

【在 N***m 的大作中提到】
:
: 这句话什么意思?你难道不能new 两个xxx对象?

N***m
发帖数: 4460
13
我不明白你说的和static class有什么关系?
不知道我理解得的确不确切:)
比如
public class B {
public int k;
}
public class Main {
B b1 = new B();
B b2 = new B();
xxx x = new xxx(this.b1, 1);
xxx y = new xxx(this.b2, 2);
public static void main(final String[] args) {
final Main m = new Main();
System.out.println(m.b1.k);
System.out.println(m.b2.k);
}
private static class xxx {
private static final int[] aa = { 1, 2, 3 };// this one
public xxx(final B b, final int j) {
b.k = xxx.aa[j];
}
}
}
最后一个方法可以对传进来的B对象(非static)进行操作阿。。

【在 b***i 的大作中提到】
: 就是说,内部的private class xxx 里面要对外面的class的非static变量进行操作,
: 所以不能把xxx设static。
: 只能把这些本来就是常数的数组拿到外围。

1 (共1页)
进入Java版参与讨论
相关主题
java inner class - 初学者问请问一个serialize class object下载运行的问题
感觉inner class挺好用的final static constants easy get cached?
inner class 让认糊涂extending generic class , but not mentioning its parameterized type?
这几个函数可以用Generic之类的东西合并么?Re: help: how does the class Model$5.class come?
[合集] java 得 inner class 有没有 static 有什么区别啊?interesting
Test your PC speed请教一个有关 inner class 的问题
关于inner class的继承问个题
请教一个简单的问题问一个java的面试题 (转载)
相关话题的讨论汇总
话题: static话题: xxx话题: final话题: class话题: private