这是我的代码片段:
public class Test {
public static void main(String[] args) {
class EnglishHelloThere {
int a=10;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个本地类,以便在编译器中没有为本地类中的变量编写任何修饰符时,查看访问修饰符的类型.
这就是我在JAVAP中得到的
Compiled from "Test.java"
class com.Test$1EnglishHelloThere
SourceFile: "Test.java"
EnclosingMethod: #21.#23 // com.Test.main
InnerClasses:
#27= #1; //EnglishHelloThere=class com/Test$1EnglishHelloThere
minor version: 0
major version: 51
flags: ACC_SUPER
Constant pool:
#1 = Class #2 // com/Test$1EnglishHelloThere
#2 = Utf8 com/Test$1EnglishHelloThere
#3 = Class #4 // java/lang/Object
#4 = Utf8 java/lang/Object
#5 = Utf8 a
#6 = Utf8 I
#7 = Utf8 <init>
#8 …Run Code Online (Sandbox Code Playgroud) Java中以下变量的可访问性有何不同?
public class Joe {
public int a;
protected int b;
private int b;
int c;
}
Run Code Online (Sandbox Code Playgroud)
我最感兴趣的是最后一个人在做什么.
我正在将对象引用传递给Util类.我试图在Util类上调用受保护的方法,但我得到编译时错误 -
The method setPositionChild(Field, int, int) from the type Manager is not visible
Run Code Online (Sandbox Code Playgroud)
要调用受保护的方法,是否只需要在实现类中?我可以不将引用传递给外部类并从那里调用引用吗?
我遇到了一个相当奇怪的行为,并且不确定这是Java问题还是Eclipse问题.
请使用以下代码:
class Foo {
private String text;
public void doStuff(Foo f) {
System.out.println(f.text);
}
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是,为什么f.text可以访问?这是一个私有领域,所以根据我的逻辑,它不应该,但IDE似乎认为它是.
我用Java编写了一个接口.之后,我尝试通过覆盖来实现它,如代码中所示.但我得到错误,我必须在方法之前添加公共.
为什么我要公开?为什么没有公开它不起作用?
正如Net-Beans所说:"试图分配较弱的访问权限;是公开的"
代码 :
package tryinginterface;
interface Bicycle {
// wheel revolutions per minute
void changeCadence(int newValue);
void changeGear(int newValue);
void speedUp(int increment);
void applyBrakes(int decrement);
}
class ACMEBicycle implements Bicycle {
int cadence = 0;
int speed = 0;
int gear = 1;
@Override
void changeCadence(int newValue) {
cadence = newValue;
}
@Override
void changeGear(int newValue) {
gear = newValue;
}
@Override
void speedUp(int increment) {
speed = speed + increment;
}
@Override
void applyBrakes(int decrement) {
speed …Run Code Online (Sandbox Code Playgroud) Java专家,我真诚地感谢任何见解!
我的包中有一个带有受保护方法的抽象类。我在同一个包中还有这个类的子类。现在,当我尝试从包外部的类实例化子类,并在子类实例上调用受保护的方法时,Eclipse 抱怨受保护的方法不可见。
我认为,受保护的方法将对所有子类可见 - 包内或包外 - 只要类可见性不限制它 - 在这种情况下,父类和子类都是公共的。我缺少什么?提前致谢!
package X;
public abstract class Transformation {
protected OutputSet genOutputSet (List list) {
..
}
}
Run Code Online (Sandbox Code Playgroud)
package X;
public class LookupTransformation extends Transformation {
}
Run Code Online (Sandbox Code Playgroud)
package Y;
import X.*;
public class Test {
public static void main(String[] args) {
List<field> fld_list = new ArrayList();
..
LookupTransformation lkpCDC = new LookupTransformation();
OutputSet o = lkpCDC.genOutputSet(fld_list); // Eclipse errors out here saying genOutputSet from the Type Transformation is not visible. WWWWWWWWHHHHHAAAATTTTTT????
} …Run Code Online (Sandbox Code Playgroud) 在HttpURLConnection.setChunkedStreamingMode()的文档中,它说如果我在参数中指定0,它将使用默认的块长度,例如:
conn.setChunkedStreamingMode(0);
Run Code Online (Sandbox Code Playgroud)
默认块长度的确切值是多少?什么是参数的单位?以字节为单位
我在两个不同的包中有两个类:
package package1;
public class ParentClass {
public void testPublic() {
}
protected void testProtected() {
}
}
package package2;
import package1.ParentClass;
public class ChildClass extends ParentClass {
void test() {
ParentClass par = new ParentClass();
par.testProtected(); // Line 1 : ERROR: testProtected() has protected access in ParentClass
testProtected(); // Line 2 : No error
ChildClass ch = new ChildClass();
ch.testProtected(); // Line 3 : No ERROR
testProtected(); // Line 4 : No error
}
}
Run Code Online (Sandbox Code Playgroud)
我能够理解为什么调用时没有错误testProtected() -- …
早在2004年,当我在RIT参加CS课程的介绍时,我的教授非常强调我们记得放入访问修饰语.没有它,默认访问将是公开的,我记得教授说的.也许我的记忆是错的,教授实际上并没有说出来,但显然现在情况并非如此.我想知道在某些时候是否曾经是这种情况,也许Sun在2004年之后的某些时候改变了它?