我要在MAIN里 调用 member 类的一个getName
不用 Member member = new Member(); 这样实例化
应该怎么实例化??
public class Member
{
private string i; public meber(A类 a,B类 b,C类 c)
{
} public void setName(string i)
{
} public string getName
{
}
}
不用 Member member = new Member(); 这样实例化
应该怎么实例化??
public class Member
{
private string i; public meber(A类 a,B类 b,C类 c)
{
} public void setName(string i)
{
} public string getName
{
}
}
{
//........
public static Member createMember(参数列表)
{
return new Member(参数列表);
}
}
常见的又单例模式、工厂模式,
还有Spring注入
Member member = new Member();
member.getName()new Member().getName()效果一样,2种写法·
工厂模式还是要new 的吧..用反射试试
package com.reflect;import java.lang.reflect.Constructor;public class ReflectTest { public static void main(String[] args) {
Class<Member> clazz = com.reflect.Member.class;
Constructor<Member> constructor = null;
Member member = null;
try {
constructor = clazz.getConstructor(String.class);
} catch (Exception e) {
e.printStackTrace();
} if (constructor != null) {
try {
member = (Member) constructor.newInstance("hello");
} catch (Exception e) {
e.printStackTrace();
}
}
System.out.println(member.getName()); //~output: hello
}}class Member {
private String str; public Member(String args) {
this.str = args;
} public void setName(String args) {
this.str = args;
} public String getName() {
return this.str;
}
}
楼主代码中已经提供了无参的构造方法你这个调用.newInstance() 是不会成功的... 这个只是在类有默认无参构造方法时候才可以
import java.sql.Timestamp;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;import com.sunyard.sunflow.client.SunflowClient;class Member
{
private String i; public Member(String a,String b,Integer c)
{
} public void setName(String i)
{
} public String getName()
{
return null;
}
}
public class Test {
public static void main(String[] args) throws Exception {
Class clazz = Member.class;
Constructor constructor = clazz.getConstructor(String.class,String.class,Integer.class);
constructor.newInstance("arg1","arg2",7);
}
}