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() {
}
发布,正常。
分享到:
相关推荐
3. 调用方法(Methods):`Method`类用于调用类的方法,包括静态方法和实例方法,甚至可以传递参数和处理异常。 4. 构造器(Constructors):`Constructor`类用于创建对象,可以指定构造函数并传入参数。 动态实例...
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"; ...
- **安全性高**:由于在类加载时就已完成实例化,因此不需要担心多线程环境下的实例化问题。 - **非懒加载**:无论是否需要使用该单例对象,都会在类加载时实例化,这可能导致资源的浪费。 - **效率较高**:一旦类被...
- 尝试实例化抽象类、接口或没有默认构造器的类。 - **解决方法**: - 提供默认构造器。 - 使用其他方式创建对象,如工厂模式。 #### 15. java.lang.InterruptedException - **定义**: 线程处于等待、休眠或其他...
// 处理类无法实例化的情况,如没有无参构造器 } catch (IllegalAccessException e) { // 处理权限问题,如构造器是私有的 } ``` 在这个例子中,`Class.forName()`用于加载类,`newInstance()`则用于创建类的实例...
默认情况下,如果类没有公开的无参构造函数,`newInstance()`方法会抛出`InstantiationException`。因此,当使用反射进行实例化时,确保有无参构造函数是必要的。 案例4则演示了如何通过反射调用类的构造函数。为了...
`Class`类提供了`newInstance()`方法,它会调用类的默认无参构造函数来创建对象。例如: ```java Class<?> clazz = Class.forName("com.cj.Book"); Object obj = clazz.newInstance(); ``` 如果类没有无参构造函数,...
`newInstance()`方法调用类的无参构造器来创建对象,如果类没有无参构造器,则会抛出`InstantiationException`。实例化的过程中,如果访问控制不允许,还会抛出`IllegalAccessException`。 5. **XML配置**:在实际...
但需要注意的是,被实例化的类必须有一个公共的无参构造器,因为 `newInstance()` 默认调用的就是无参构造器。如果类没有无参构造器,调用 `newInstance()` 会抛出 `InstantiationException`。 2. **通过有参构造...
要通过`Class`对象创建类的实例,可以调用`newInstance()`方法,前提是类必须有一个无参构造器。在案例3中,我们首先通过`Class.forName()`获取`Person`类的`Class`对象,然后尝试使用`newInstance()`创建`Person`...
这个方法会调用类的无参构造函数,如果类没有公开的无参构造函数,需要特殊处理。 4. **调用方法**: 要调用类中的方法,首先获取到Method对象。`Class.getMethod()`或`Class.getDeclaredMethod()`可以做到这一点,...
`newInstance()`会调用类的默认无参构造器,如果没有无参构造器或者构造器是私有的,将会抛出异常。在实际使用时,我们应该捕获这些可能的异常,例如`InstantiationException`和`IllegalAccessException`。 在更...
这种方式适用于无参构造函数的情况。 ```java Object obj = cls.newInstance(); ``` #### 通过Constructor实例化对象 如果类的构造函数带有参数,则需要使用`Constructor`类的`newInstance()`方法来创建对象。这...
- `newInstance()`:调用默认构造器创建一个新的类实例,如果没有无参构造器,会抛出`InstantiationException`。 - `getName()`:返回类的全名,包括包名。 - `getInterfaces()`:获取类实现的所有接口。 - `...
需要注意的是,newInstance()方法只能用于无参构造函数的类,如果类中只有有参构造函数,那么newInstance()方法将抛出InstantiationException异常。因此,在创建实体类时,务必带上无参构造函数,以便在使用反射机制...