相关疑难解决方法(0)

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

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

c++ java accessor friend

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

为什么Java中缺少friend指令?

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

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

java oop friend-class

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

隐藏jar文件中的类

是否真的不可能在jar文件中隐藏某些类?

我希望不允许直接实例化类以使其更灵活.这个罐子里只能看到工厂(或立面).

除了创建两个项目之外,还有其他办法解决这个问题吗?(两个项目:第一个包含类(实现),另一个引用第一个并包含工厂;后面只引用第二个)

java information-hiding jar facade factory-pattern

10
推荐指数
2
解决办法
1万
查看次数

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

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

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

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

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

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

我已经意识到了这一点

java api

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

隐藏JAR中的公共类

有谁知道在JAR文件中隐藏公共类的方法.换句话说,有没有办法创建"jar-visible"类.关键是要在我的JAR文件中隐藏公共类,并向我的JAR用户提供对指定类的访问.在MANIFEST框架中借助MANIFEST.MF中的"Export-Package"参数实现类似的东西

java jar

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

抽象如何帮助隐藏 Java 中的实现细节?

抽象是隐藏实现细节并仅向用户显示功能的过程。

另一种方式,它只向用户显示重要的东西并隐藏内部细节。所以下面是一个创建抽象类并覆盖抽象方法的示例。但我不明白的是它是如何隐藏实现细节的?

abstract class Bank
{    
   abstract int getRateOfInterest();    
} 

class SBI extends Bank
{    
 int getRateOfInterest()
  {
   return 7;
   }    
  }

class PNB extends Bank  
{    
 int getRateOfInterest()
   { 
    return 8;
   }    
 }    

class TestBank{    
public static void main(String args[])
{    
 Bank b;   
 b=new SBI();  
 System.out.println("Rate of Interest is: "+b.getRateOfInterest()+" %");    
 b=new PNB();  
 System.out.println("Rate of Interest is: "+b.getRateOfInterest()+" %");    
 }
 }     
Run Code Online (Sandbox Code Playgroud)

java abstract-class abstraction

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

在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
查看次数