(Java接口)(接口名称)class\u name.newInstance()在Java中是什么意思?
代码: 我正在从书中学习接口,下面的代码是编写的。下面这行是什么意思(Java接口)(接口名称)class\u name.newInstance()在Java中是什么意思?,java,Java,代码: 我正在从书中学习接口,下面的代码是编写的。下面这行是什么意思 interface MyInterface { void connect(); } class SQLconnection implements MyInterface { public void connect() { System.out.println("Connection successful to SQL database"); } } class Ora
interface MyInterface {
void connect();
}
class SQLconnection implements MyInterface {
public void connect() {
System.out.println("Connection successful to SQL database");
}
}
class OracleConnection implements MyInterface {
public void connect() {
System.out.println("Connection successful to Oracle database");
}
}
public class Main {
public static void main(String[] args) throws Exception {
String class_name = args[0];
Class c = Class.forName(class_name);
MyInterface obj = (MyInterface)c.newInstance();
obj.connect();
}
}
Java中的工厂模式通常使用newInstance()方法来创建对象,关于使用工厂模式的原因有很多例子。例如:
MyInterface obj = (MyInterface)c.newInstance();
注意:我想您可能会对代码为什么不使用“new”关键字来创建新对象感到困惑。
这是我的答案:
初始化类并生成实例时,newInstance()方法与关键字“new”之间的主要区别在于一个是方法,另一个是关键字
它们之间的区别在于创建对象的方式不同。前者使用类加载机制,后者只创建一个新类。那么为什么有两种方法来创建对象呢?这主要考虑软件设计思想,如软件可伸缩性、可伸缩性和可重用性。
c.newInstance()
将在对象
类(所有类的父类)时返回一个实例
但是connect()
方法是在MyInterface
接口中定义的,而不是在对象中定义的
因此,您可以键入caste fromObject
到MyInterface
,然后在其上调用connect()
方法
请注意,只有当class\u name
=它被称为casting
时,才能进行这种类型的强制转换,但我们可以创建接口对象,对吗@如果您的代码执行了SQLconnection conn=newsqlconnection()代码>则不需要进行任何铸造。但是上面的代码在实例化一个对象时使用了反射
,该对象需要被浇铸到类/接口中。@Bomba请看一看obj.connect()代码>将不起作用-对象没有名为connect
的方法这就是为什么需要将其强制转换。将对象强制转换到接口中的需要/用途是什么?我的意思是(例如接口)对象
class c = Class.forName("Example");
factory = (ExampleInterface)c.newInstance();