您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

有没有一种方法可以模拟Java中的C ++“朋友”概念?

有没有一种方法可以模拟Java中的C ++“朋友”概念?

这是我在JAVA中用来复制C ++朋友机制的一个小技巧。

可以说我有一节课Romeo和另外一节课Juliet。由于仇恨原因,他们处于不同的包裹(家庭)中。

Romeo想要cuddle Juliet并且Juliet只想让Romeo cuddle她。

C ++中,Juliet将声明Romeo为(情人),friend但是在Java中没有这样的东西。

这是类和技巧:

女士优先 :

package capulet;

import montague.Romeo;

public class Juliet {

    public static void cuddle(Romeo.Love love) {
        Objects.requireNonNull(love);
        System.out.println("O Romeo, Romeo, wherefore art thou Romeo?");
    }

}

所以方法Juliet.cuddle是,public但是你需要Romeo.Love调用它。它使用此方法Romeo.Love作为“签名安全性”,以确保只能Romeo调用方法并检查爱情是否真实,这样运行时将抛出a NullPointerException如果是null。

现在男孩:

package montague;

import capulet.Juliet;

public class Romeo {
    public static final class Love { private Love() {} }
    private static final Love love = new Love();

    public static void cuddleJuliet() {
        Juliet.cuddle(love);
    }
}

该类Romeo.Lovepublic,但是其构造函数private。因此,任何人都可以看到它,但只能Romeo构造它。我使用静态引用,因此Romeo.Love从未使用过的引用只会被构建一次,并且不会影响优化。

因此,Romeo只能cuddle Juliet并且只能他可以,因为只有他可以构造和访问Romeo.Love实例,这Julietcuddle她是必需的(否则她会给你打一个NullPointerException)。

java 2022/1/1 18:14:07 有620人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶