本文目录一览:
- 1、java中如何实现由类名动态创建对象
- 2、java怎么根据类名称得到一个类型
- 3、java如何通过类型名得到具体的类型
- 4、java里如何根据类名(String)返回类
- 5、在JAVA中静态变量可以通过"类名.变量名"的方式来访问是什么意思.可不可以举个例子
- 6、在java中可以用类名.方法名调用方法吗?一般不是用对象名调用方法吗?
java中如何实现由类名动态创建对象
首先用 Class.forName(完整类名)获得一个Class对象clazz,然后调用Class对象clazz的newInstance()方法得到一个对象。例如:
package kown.reflect;
public class ReflectTest
{
public static void main(String[] args)
{
try
{
Class? clazz = Class.forName("kown.reflect.Show");
Show show = (Show) clazz.newInstance();
show.test();
} catch (ClassNotFoundException e)
{
e.printStackTrace();
} catch (InstantiationException e)
{
e.printStackTrace();
} catch (IllegalAccessException e)
{
e.printStackTrace();
}
}
}
class Show
{
public void test()
{
System.out.println("hello world!");
}
}
其中"kown.reflect.Show"是完整类名,就是包名加类的名字。
java怎么根据类名称得到一个类型
Java 提供了Class类来通过类名获取对象。
下面请看示例:
先声明一个Userinfo.java类。
public class Userinfo {
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
声明一个主类。
public class Test {
public static void main(String[] args) throws Exception {
@SuppressWarnings("unchecked")
ClassUserinfo c = (ClassUserinfo) Class.forName("Userinfo");
//通过newInstance()获取对象实例。
Userinfo u = c.newInstance();
try {
System.out.println(Class.forName("Userinfo"));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
java如何通过类型名得到具体的类型
只需要得到类型
Class a=Class.forName("String");
Class b=Class.forName("Date");
如果还需要根据得到的类型强制转换的话jdk1.5之前的版本不支持,1.5以后可以使用泛型
java里如何根据类名(String)返回类
你说的根据一个字符串要得到一个类,在Java中只能使用反射机制了。反射机制很有趣的,猪名的框架spring就是大量用的反射。你可以百度Java反射机制,文章很多的。如果你不用反射技术,只能如下:
public Object getClassByName(String className){
if(className.equals("A")){
return new A();
}else if(className.equals("B")){
return new B();
}
}
在JAVA中静态变量可以通过"类名.变量名"的方式来访问是什么意思.可不可以举个例子
比如
class AB{
public static int a=0;
public int b=1;
}这个类
访问a的话 可以直接用 AB.a 而不需要实例一个AB对象而访问b的话需要 AB ab=new AB();先得到一个AB的实例 再用ab.b;才能访问。
在java中可以用类名.方法名调用方法吗?一般不是用对象名调用方法吗?
静态方法可以使用类名.方法名进行调用
举例
class A{
void print(){
System.out.println("你好");
}
static void getNum(){
System.out.println("2+6="+(2+6));
}
}
public class DemoTest {
public static void main(String[] args) {
A.getNum();//静态方法, 可以 类名.方法名直接调用
A a = new A();
a.print();//非静态方法需要实例对象来调用
a.getNum();//静态方法也可以实例对象来调用,但是不推荐这种方式调用静态方法
}
}
输出
2+6=8
你好
2+6=8