小编use*_*721的帖子

访问控制 - 保护成员不受包外的影响

P4在默认包中有类(我知道使用默认包是不好的做法,但现在只是"例如"):

import temp.P2;

public class P4 extends P2 {

public void someMethod() {    
    P2 p2 = new P2();
//        p2.p2default();   // ERROR as expected
    p2.p2public();
    p2.p2protected();  // ERROR as not expected
}    

}
Run Code Online (Sandbox Code Playgroud)

P2包中的类temp

package temp;

public class P2 {

protected void p2protected() {    
...
}    

public void p2public() {    
...
}    

void p2default() {    
...
}    

}
Run Code Online (Sandbox Code Playgroud)

访问控制机制,我希望 P4- 扩展后P2,应该能够在protected导入该包的命名空间后,甚至从包外部看到其超类的成员.

我错过了什么?

TIA.

java access-control

6
推荐指数
1
解决办法
75
查看次数

Java常量的编译时值绑定

据到最后的音符在这里:

" 如果将原始类型或字符串定义为常量并且该值在编译时已知,则编译器将代码中的常量名称替换为其值.这称为编译时常量.如果值为不断在外界的变化(例如,如果立法规定PI实际上应该是3.975),您将需要重新编译使用此常量来获取当前值的类. "

假设我在中定义了一个公共常量PI(public static final double PI=3.14)class A,并PI从内部使用了这个常量class B.

所以 - 通过上面的规范,如果我将PI3.14 的值更改为3.0 in class A,我必须重新编译class B以获得该更改的效果class B.

这里的Q是 - 上述规范中"常数"的定义究竟是什么?它是final关键字吗?static在这种情况下,任何字段成员"限定"为常量吗?这里的非静态字段成员将脱离上下文 - 它们的值在运行时分配(?)

TIA.

// ===========================

编辑:

这里的Q是:什么使编译器决定在编译时绑定值.请问static关键字全部由自己做这个工作.或者还有其他什么东西.

// =======================

参考下面的快速回答,不断投票:

同一页面上的行:

" 静态修饰符与最终修饰符结合使用,也用于定义常量.最终修饰符表示此字段的值不能更改."

1.)"...... 用于定义常量......":还有什么定义常量.

2.)"...... 最终修饰符结合使用 ":final在编译时使值受限是必要的 - 我怀疑它是什么.

java static constants

5
推荐指数
1
解决办法
497
查看次数

拥有一个没有抽象方法的抽象类有什么意义?

可以有一个实现其所有方法的抽象类- 其中没有抽象方法.

例如.:

public abstract class someClass { 
    int a; 
    public someClass (int a) { this.a = a; } 
    public void m1 () { /* do something */ } 
    private void m2 () { /* do something else */ }  
}
Run Code Online (Sandbox Code Playgroud)

具有这样一个抽象类的优点(如果有的话)与具体相同的类相比有什么优势呢?

我能想到的是,当我将其声明为抽象时,它将不会被实例化.但是,通过使其具体化并且其构造函数是私有的,我可以产生相同的效果.

TIA.

// ==================

编辑:我能想到的另一个用途:

它可能会扩展另一个抽象类或实现一个接口而不实现该类的抽象方法 - 尽管它正在实现它自己的所有方法.无论它值多少钱.

java inheritance abstract-class

5
推荐指数
1
解决办法
736
查看次数

几分钟Java的时间

我希望计算一天中的时间.

例如:当输入为11:34时,输出应为11*60 + 34.这个日期并不重要.

我只需要它到分钟刻度.秒,毫秒......无所谓.在没有我计算它的情况下,Java中的某个方法是否有一种方法可以做到这一点?

现在,我使用的theTime.split(":"),theTime是一个String控股"11:34"在这里,解析每边的整数,做计算.

我看到了,Time但我现在正在做的事情似乎更直接.

Systems两者都没有.

java time datetime

3
推荐指数
2
解决办法
922
查看次数

八进制值 - 在JDK8中?

此Q用于验证.

当文字值以0开头时,JDK 8似乎正在处理八进制:

  System.out.print(011);
Run Code Online (Sandbox Code Playgroud)

印刷9,和

  System.out.print(08);
Run Code Online (Sandbox Code Playgroud)

给出一个检查错误.

这不是在文档中 - 还是(?)

这是jdk8中的新功能吗?如果是这样的话 - 在八进制的情况下是否有一些细节,除了HEX和二进制的那些?

TIA

// =============================

编辑:

Q是关于JDK处理八进制 - 从什么时候开始.dosc仅显示HEX和二进制.

第二个代码行是为了显示它的八进制JDK,当值前面有一个0时.

java literals octal java-8

1
推荐指数
1
解决办法
108
查看次数

currentThread()总是currentThread()?

在Java中Thread,该方法currentThread() 返回"当前正在执行的线程"的内存引用."当前正在执行的线程"这里是调用它的线程currentThread().

我想知道是否有一个例外情况,即是否currentThread()返回一个其他线程而不是调用它.

例如:假设,在main方法中,我正在调用Thread.currentThread().toString()它 - 它返回线程的toString()表示main.

问题是,是否存在返回内存中运行的其他线程的情况?

我想不出一个.currentThread()这是在main线程上执行- 因此无论何时它正在运行,它都是它正在执行的主线程空间.除非有一些滑倒,否则我看不出它会怎样.

currentThread() 是原生的 - 可以在代码中看到这些.

java multithreading

-1
推荐指数
1
解决办法
302
查看次数