相关疑难解决方法(0)

有没有办法在Java中模拟C++的"朋友"概念?

我希望能够在一个包中编写一个Java类,它可以访问另一个包中的类的非公共方法,而不必使它成为另一个类的子类.这可能吗?

c++ java accessor friend

182
推荐指数
5
解决办法
7万
查看次数

为什么Java中缺少friend指令?

我想知道为什么Java的设计没有friendC++中提供的指令,以便更好地控制哪些方法和实例变量可以从已定义类的包外部获得.

我没有看到任何实际的原因或任何特定的缺点,它似乎只是一个设计问题,但如果添加到语言中则不会产生任何问题.

java oop friend-class

17
推荐指数
3
解决办法
4147
查看次数

如何将Java API的内部结构隐藏到世界其他地方

我正在开发一个Java Api来做事情(秘密,呃嗯;).

有没有办法隐藏类,以及我的API的内部结构?

我到现在才发现:

  • 使用内部类(丑陋的方式,我不想把所有内容放在类文件中)
  • 一个包中的所有类,以便我可以使用"包"-visibilty(也很难看,我需要更多的包)

例:

---
package net.my.app;
//this is the Public Access
class MyPublicClass{
    public void somePublicFunction(){ 
        //access to not visibil classes
    }
}

---
package net.my.app.notvisible:
//this is what i want to hide
class MyNOTPublicClass{
    ...
}
---
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢!

java api design-patterns

14
推荐指数
2
解决办法
9631
查看次数

我的内部API类应该都在一个包中吗?

我正在努力打包API以供公众使用.因此,我试图限制只暴露于我希望公开和可支持的方法.当然,在这下面有许多有限的访问方法.

麻烦的是我有很多内部代码需要访问这些受限制的方法而不公开这些方法.这会产生两个问题:

  • 我不能创建接口来在类之间进行通信,因为这会使我的内部方法公开.
  • 除非我将大部分内部类放在同一个包中,否则我无法访问受保护的或默认的方法.

所以,我有大约70或80个内部类在干净隔离的包中但是具有过度宽松的访问修饰符.你会说单个包是两个邪恶中的较小者还是有更好的方法来掩盖我的内部方法,同时保持更细粒度的包?

我有兴趣在这里找到最好的做法.

我已经意识到了这一点

java api

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

在Java中实现朋友(可用C++)功能

好吧,让我们离开关于友谊是否打破封装的争论,并且实际上尝试优雅地提出一个连贯的设计.这是一个双重功能:

1)关于如何实施的一般问题:

   public class A 
   {
      friend class B;
   }
Run Code Online (Sandbox Code Playgroud)

2)为什么我需要这个功能?我的一些类实现了Serializable接口.但是,我想在Derived类中使Serializable方法受到保护,这样我就不会将它们暴露给客户端(以及文档中的javadoc).但是,内部类应该能够访问它们.在java中解决这个问题的一般方法是什么?

注意:我正在使用当前C++标准中定义的友谊.

谢谢

java javadoc

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

标签 统计

java ×5

api ×2

accessor ×1

c++ ×1

design-patterns ×1

friend ×1

friend-class ×1

javadoc ×1

oop ×1