黑马程序员技术交流社区
标题:
大家帮我看一下代码要怎么该 才不会报错
[打印本页]
作者:
学习代码
时间:
2014-4-28 16:34
标题:
大家帮我看一下代码要怎么该 才不会报错
import java.io.EOFException;
import java.lang.reflect.Constructor;
class Demo
{
private String name;
Demo()
{
System.out.println("lisi");
}
Demo(String name)
{
this.name=name;
}
public void getName()
{
System.out.println(name);
}
}
class Demo1
{
public static void main(String[] args)
{
//new Demo("zhangsan").getName();
Constructor constructor = Demo.class.getConstructor(String.class);
Demo d = constructor.newInstance("zhangsan");
System.out.println(d);
}
}
复制代码
Demo1.java:5054: 错误: 不兼容的类型
Demo d = constructor.newInstance("zhangsan");
^
需要: Demo
找到: Object
1 个错误
谢谢
作者:
随风而去
时间:
2014-4-28 17:05
这个问题其实就是一个访问权限的问题 你用的是protected的构造方法
该构造方法在Constructor中无法直接获取 只有通过Demo.class.getDeclaredConstructors(); 才可以获取受保护的构造方法
package test2;
import java.io.EOFException;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
class Demo
{
private String name;
Demo() //你的源代码这里是 缺省值
{
System.out.println("lisi");
}
Demo(String name) //你的源代码这里是 缺省值
{
this.name=name;
}
public void getName()
{
System.out.println(name);
}
}
public class Demo1
{
public static void main(String[] args) throws NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException
{
//new Demo("zhangsan").getName();
//当构造方法是缺省或者私有的时候都必须提供方法 受保护的构造方法只有通过继承才能获取 无法外部访问
Constructor constructor = Demo.class.getDeclaredConstructor(String.class);
Demo d = (Demo) constructor.newInstance("zhangsan");
System.out.println(d);
}
}
作者:
doyxy
时间:
2014-4-28 17:08
要加(Demo)强制转换,另外构造函数需要public
作者:
学习代码
时间:
2014-4-28 17:44
随风而去 发表于 2014-4-28 17:05
这个问题其实就是一个访问权限的问题 你用的是protected的构造方法
该构造方法在Constructor中无法直接获 ...
谢谢 朋友
作者:
年轻的老头
时间:
2014-4-28 19:32
//当构造方法是缺省或者私有的时候都必须提供方法 受保护的构造方法只有通过继承才能获取 无法外部访问
这句注解有问题
但是有的构造方法是对的
Constructor constructor = Demo.class.getDeclaredConstructor(String.class);
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2