Android 2.3.3
Eclipse Version: 3.7.0
LogCat
主要错误:
04-06 11:24:33.126: ERROR/AndroidRuntime(17173): Caused by: java.lang.InstantiationException: com.tmall.nokia.Iphone
04-06 11:24:33.126: ERROR/AndroidRuntime(17173): at java.lang.Class.newInstanceImpl(Native Method)
04-06 11:24:33.126: ERROR/AndroidRuntime(17173): at java.lang.Class.newInstance(Class.java:1409)
04-06 11:24:33.126: ERROR/AndroidRuntime(17173): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
04-06 11:24:33.126: ERROR/AndroidRuntime(17173): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561)
04-06 11:24:33.126: ERROR/AndroidRuntime(17173): ... 11 more
发生错误原因分析:
Iphone 继承自 Activity,启动Iphone 进入正常,后在其中加入构造方法。
public Iphone(Context context) {
this.context = context;
}
在其它地方实例化Iphone ,
Iphone Iphone = new Iphone(context);
可正常使用。
但在以
Intent integer = new Intent(context, Iphone.class);
context.startActivity(integer);
方式启动,进入Activity 时,产生上述InstantiationException实例化错误。
原来,Activity 默认不需构造函数,但在加入有参数的构造方法后,必须同时加入无参数的默认构造方法
解决办法:
Iphone 加入默认构造方法
public Iphone() {
}
发布,正常。
分享到:
相关推荐
当使用Java的反射API尝试创建一个类的实例时,如果类没有默认的无参构造方法,或者类构造方法不能被访问(例如私有构造方法),那么就可能会抛出InstantiationException异常。 解决InstantiationException的一个...
当遇到类没有无参构造函数的情况,我们需要使用Class对象的getConstructor方法来获取指定参数类型的构造函数,并通过.newInstance方法传入具体的参数值来创建实例。在执行这一操作时,我们同样需要注意捕获并处理...
2. **构造函数异常**:如果类的构造函数在实例化过程中抛出了异常,那么这个异常会被包装在InstantiationException中。 3. **数组类实例化**:Java中数组类是特殊的对象,不能直接通过类的名称实例化数组类对象。 #...
3. 调用方法(Methods):`Method`类用于调用类的方法,包括静态方法和实例方法,甚至可以传递参数和处理异常。 4. 构造器(Constructors):`Constructor`类用于创建对象,可以指定构造函数并传入参数。 动态实例...
这种异常通常发生在类或接口无法实例化,尤其是当类通过抽象类或接口定义,或者当类没有无参构造函数时。要解决这个问题,我们需要理解Java的反射API如何工作,以及如何正确地处理可能抛出的异常。 首先,Java的...
当需要实例化的类没有无参构造器,而程序尝试用Class类的newInstance方法创建实例,或者类路径配置错误导致类未能正确加载到JVM中时,该异常便会被抛出。 要解决此问题,首先应当检查类的构造函数。确保目标类拥有...
Java让泛型实例化的方法 Java是一种静态类型语言,它可以在编译时检查类型的正确性,以避免运行时的类型错误。然而,在 Java 中使用泛型时,会出现一个问题:如何实例化泛型对象?在 Java 中,泛型擦除机制使得...
`newInstance()`方法可能会抛出`InstantiationException`或`IllegalAccessException`异常,这是因为如果类没有公共无参构造函数,或者构造函数是不可访问的,那么无法直接使用`newInstance()`方法创建实例。...
7. newInstance()方法是Class类的一个方法,它调用类的无参构造函数来创建一个类的新实例。需要注意的是,如果类中没有无参构造函数,使用newInstance()会抛出异常。 8. 通过反射机制创建对象时,如果类中定义了带...
这段代码展示了如何使用`loadClass()`方法加载一个类,并通过`newInstance()`创建一个无参数构造函数的实例。这里需要注意的是,如果目标类没有无参数构造函数或者该构造函数不可见,则会抛出异常。 ##### 示例二:...
每个类至少有一个构造方法,如果没有显式定义,Java会提供一个默认的无参数构造器。通过构造方法,我们可以设置对象的初始状态。 反射的应用主要集中在`java.lang.reflect`包中的三个核心类:`Class`、`Constructor...
// 受保护的默认构造方法 protected RegSingleton() {} // 静态工厂方法,返回指定登记对象的唯一实例 public static RegSingleton getInstance(String name) { if (name == null) { name = "RegSingleton"; ...
- **安全性高**:由于在类加载时就已完成实例化,因此不需要担心多线程环境下的实例化问题。 - **非懒加载**:无论是否需要使用该单例对象,都会在类加载时实例化,这可能导致资源的浪费。 - **效率较高**:一旦类被...