有没有办法从Java中不包含main的类打印到控制台?
假设我们上课了有没有办法从Java中不包含main的类打印到控制台?,java,Java,假设我们上课了 package myTest; public class a { public static void main(String[] args) { b printToConsole = new b(); } } package myTest; public class b { public static void printThis() {
package myTest;
public class a {
public static void main(String[] args) {
b printToConsole = new b();
}
}
package myTest;
public class b {
public static void printThis() {
System.out.println("this is a test");
}
}
我不能修改。我也有课
package myTest;
public class a {
public static void main(String[] args) {
b printToConsole = new b();
}
}
package myTest;
public class b {
public static void printThis() {
System.out.println("this is a test");
}
}
我可以修改。我想调用一个(我不能修改)并以某种方式打印到控制台“这是一个测试”。在目前的课程中,这显然不起作用,我理解为什么
总结:
有没有一种方法可以在不修改a的情况下调用a并对控制台进行“this Is test”?(b可以修改)。您可以在
b
public b() {
System.out.println("this is a test");
}
或者来自静态初始值设定项
static {
System.out.println("this is a test");
}
(第二个将只为创建的第一个对象生成输出)Put
System.out.println(“这是一个测试”)b
的默认/无参数构造函数中的code>:
public class b {
public b() {
System.out.println("this is a test");
}
}
在目前的课程中,这显然不起作用,我理解为什么
因为类b
的printThis
方法没有在类a
中的任何地方调用,所以它不会被执行。方法不会自动运行,它们必须被调用。您必须从类a
调用该方法:
b printToConsole = new b();
printToConsole.printThis();
public class b {
// Constructor
public b() {
System.out.println("this is a test");
}
}
或者,您必须将printToConsole
方法的内容放入类b
的构造函数中(此时不必修改类a
)。当创建b
的新实例时(类a
中的new b();
语句),将调用构造函数:
是的,您可以通过多种方式完成:-
使用构造函数的第一种方法
class B
{
public B()
{
System.out.println("This is a test");
}
}
使用匿名块的第二种方法
class B
{
{
System.out.println("This is a test");
}
}
第三种是使用静态块
class B
{
static{
System.out.println("This is a test");
}
}
实际上,如果这些块在单个类中声明,则这些块的执行优先级如下:-
1.静态块
2.初始化块(匿名块)
3.构造函数
这三个块都在运行时通过对象初始化执行。
基本上,编译器将init块复制到构造函数中,用于在多个构造函数之间共享代码。在b
的构造函数中放置一个print语句?