gpt4 book ai didi

java - 仅在两个类之间私有(private)共享变量 - Java

转载 作者:行者123 更新时间:2023-12-02 11:56:23 25 4
gpt4 key购买 nike

我有一个包含两个类的包。私有(private)变量share位于class A并且该变量只能由这两个类访问,AB ,并且无法通过导入包来访问。可以实现这个目标吗?

// A.java    
class A {
private static String share;

}

// B.java
class B {
public String myMethode() {
// do something with share
}
}

最佳答案

你无法直接实现它。Java中有可见性级别:

public - 从任何其他类可见

protected - 在扩展类的所有类中可见 所以如果在 A 类你有

class A {
protected String share;
}

它将在class B extends Aclass C extends B等中可见...... 那么就有可能创建另一个class D extends A并且share将在其中可见。除非class A是最终的,但你不能需要class B extends A

包可见

package com.foo.myclasses;
class A {
String share;
}

这样share将在包com.foo.myclasses中的所有类中可见因此,仍然有一种方法可以在同一个包中创建一个类,并且 share 将在其中可见。

您可以采取变通办法来实现这一目标。

在A类中创建私有(private)字符串共享

创建 protected getShare()(或包可见)方法 并检查类,例如

protected String getShare() {
if (this.getClass().getName().equals("com.foo.myclasses.A") or this.getClass().getName().equals("com.foo.myclasses.B")) {
return share;
} else
{
throw new IllegalAccessException(this.getClass().getName() + " is not allowed to access share);
// or return null
}
}

但它是关于在运行时访问共享值的。没有什么可以阻止代码中的访问(如上所述)。代码将编译,但在运行时抛出异常。

就是这样。

关于java - 仅在两个类之间私有(private)共享变量 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47575617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com