avatar
static final的问题# Java - 爪哇娇娃
l*t
1
话说俺家的玫瑰花坛里今年自己窜出2棵[哈罗皮勒],长势旺盛,青椒不停地结,俺时
不时去摘它一把炒菜吃。
今天竟看见一朵娇艳的浅粉红的玫瑰花被几个[哈罗皮勒]帅锅簇拥着,场面感人啦。
avatar
b*i
2
private class xxx extends yyy {
private static final long serialVersionUID = 31L;
上面是正确的
private static final int[] myArray = {99,-1};却不对,说不能用static
为什么?如果数组没有static, 能保证xxx的不同对象不用分别分配myArray的内存吗?
avatar
T*m
3
玫瑰不怕辣,使我想起版上一个人!LOL。

【在 l*t 的大作中提到】
: 话说俺家的玫瑰花坛里今年自己窜出2棵[哈罗皮勒],长势旺盛,青椒不停地结,俺时
: 不时去摘它一把炒菜吃。
: 今天竟看见一朵娇艳的浅粉红的玫瑰花被几个[哈罗皮勒]帅锅簇拥着,场面感人啦。

avatar
f*n
4
没问题。谁说不能用?
avatar
G*A
5
雅俗共賞,飽了眼福也勾食慾。
avatar
b*i
6
public class zzz {
private xxx ok=new xxx();
private class xxx {
private static final int[] aa={1,2,3};// this one

【在 f*******n 的大作中提到】
: 没问题。谁说不能用?
avatar
N*m
7
我想是因为每个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

avatar
f*n
8
这个是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

avatar
B*g
9
what is constant in Java?

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

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

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

avatar
N*m
12

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

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

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

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

avatar
N*m
16
我不明白你说的和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。
: 只能把这些本来就是常数的数组拿到外围。

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。