Java 如何在另一个类中多次调用一个类

Java 如何在另一个类中多次调用一个类,java,Java,我正在创建一个命令行java工具,用于生成RSA加密并对其应用蛮力攻击。我有一个名为RSA的类,我在其中随机生成参数,输入文本,对其进行加密和解密 第二类称为BFRSA。它将被调用以生成新的随机参数,加密相同的文本并与第一个加密的文本进行比较 问题是我只能用相同的变量名调用BFRSA一次 我需要调用一个类,所以请不要建议将它变成一个方法 BFRSA BS = new BFRSA(); 类不是函数。不能叫他们。您的意思是实例化,即创建类的对象实例。只要类的文件被导入到声明它的位置,并且类型为pu

我正在创建一个命令行java工具,用于生成RSA加密并对其应用蛮力攻击。我有一个名为RSA的类,我在其中随机生成参数,输入文本,对其进行加密和解密

第二类称为BFRSA。它将被调用以生成新的随机参数,加密相同的文本并与第一个加密的文本进行比较

问题是我只能用相同的变量名调用BFRSA一次

我需要调用一个类,所以请不要建议将它变成一个方法

BFRSA BS = new BFRSA();

类不是函数。不能叫他们。您的意思是实例化,即创建类的对象实例。只要类的文件被导入到声明它的位置,并且类型为
public
。您可以在另一个类的声明中实例化该类类型的对象。对象具有附加到它的方法,然后可以“调用”这些方法来对该对象实例进行操作。调用构造函数,即
newclassname()
只会创建该类的更多对象。此外,您拥有的变量是指向该对象的“指针”。一个变量一次只能“指向”一个对象。

当你说你调用一个类时,你是指构造函数吗

您可以多次调用hat构造函数:

BFRSA bs1 = new BFRSA();
BFRSA bs2 = new BFRSA();
BFRSA bs2 = new BFRSA();
您还可以在循环中进行迭代:

BFRSA bs;
for(int i = 1; i <= 10; i++){
    bs = new BFRSA();
}
BFRSA-bs;

首先,对于(inti=1;i,您并不是在强制执行。您只是在比较不同的公钥如何影响您的纯文本,您可能在试图找出这些密钥之间的关系

现在来回答问题

“问题是我只能用相同的变量名调用BFRSA一次。”

首先,你不能调用类。你可以调用函数和构造函数。也许你是指调用构造函数,但是如果你只能调用一次构造函数,问题出在哪里?这是所有基于OOP的语言的设计。构造函数的设计是指只能调用一次。它们的唯一目的是初始化将对象化(在外行的术语中,它意味着产生一个物种的对象,比如说BFRSA,具有独特的属性)。函数意味着执行真正的工作。如果你能这样想,你会发现不多次“产生”同一个对象是合理的


如果您仍然想多次调用构造函数,那么您唯一的选择可能就是创建一种新的语言。

您将如何调用一个类?你只能调用方法。不清楚你想要什么样的方法。。您可以在没有类实例的情况下对多个调用使用静态方法。或者,如果您不止一次需要同一个类的实例,您可以将该类设置为Singleton。如果您需要多个实例,只需使用
new BFRSA()
创建任意数量的实例即可。您可能需要阅读Java(或任何其他面向对象编程语言)作为起点。通过这种方式,您将更快地找到答案,并找到您现在没有但很快就会有的问题的答案。如果您发布更多的代码,也会更有帮助。你发的那一行没用。“Constructor”是我要找的词,如果我早点记住它,会对我的搜索更有帮助。我在@Erik P answer中找到了解决方案,无论如何谢谢。为那些模棱两可的家伙感到抱歉。我只发布了一行代码,因为这两个类中的代码都不重要,我试图准确回答我的问题。是的,“constructor”是我要找的词,如果我早点记住它,会对我的搜索更有帮助。总之,循环完成了任务,做得很好,兄弟。非常感谢。是的,“constructor”是我要找的词,如果我能早点记住它,会对我的搜索更有帮助。我在@Erik P answer中找到了解决方案,谢谢。抱歉,你误解了暴力法。我会让它变得简单:在主加密之后,第二个加密被启动n次,应用于相同的纯文本,然后比较新的加密文本和旧的加密文本,当它们相等时,解密结果是正确的原始纯文本,我们保留参数(p,q,e,d…)蛮力攻击成功了。因为构造器Erik已经回答了问题,它可以工作,不需要新的语言;),谢谢你的关注。它肯定会起作用,但它有什么作用呢?我从来没有说过它会抛出一个错误,但这是毫无意义的。我的意思是,对于单个对象,只能调用构造函数一次。Erik的解决方案看起来像是多次调用构造函数,但实际上每次调用构造函数时都会创建一个新对象,而对旧对象的引用将永远丢失,因为您使用的是同一个变量。这就是为什么Erik的解决方案是完美的,因为我应用了穷举搜索(比较)在这里,使用旧对象删除有助于优化内存使用。我的算法并非无用,我正在帮助4名博士对RSA算法进行详细研究。我从未对你的算法发表过评论。我相信你的算法会有帮助(没有讽刺的意思)。我想说的是,实际上要由JVM来优化内存。对同一变量多次调用构造函数将创建一个新对象,这并不一定意味着旧对象将被终止。也许JVM可以做到这一点,但如果在C/C++中做到这一点,您将注定要失败。