A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 章闽 中级黑马   /  2012-10-23 13:39  /  1193 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Sundae
{
private Sundae()
{}
static Sundae makeASundae()
{
return new Sundae();
}
}
在同一个.java文件中,public主类中创建该类对象的方式如下:
public class HelloDate
{
Sundae testSundae = new Sundae.makeASundae();
}
为什么编译器总是抱错,说Sundae不能当作类型来解决,为什么?

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

6 个回复

正序浏览
Sundae testSundae = Sundae.makeASundae();
这条语句是获得一个名为testSudae的Sundae类类型的实例,而Sundae.makeASundae()的
前面不应加“new”,new是创建的意思,而Sundae.makeASundae()直接可以创建出一个实例。
回复 使用道具 举报

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1

查看全部评分

回复 使用道具 举报
new 是用来创建类对象的,你那是通过类中的方法获得对象  把new去掉就行了
public class test_001 {

        /**
         * @param args
         */
         

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                Sundae testSundae = Sundae.makeASundae();
                testSundae.a();
        }

}
class Sundae
{
        private Sundae()
        {
        }
        static Sundae makeASundae()
        {
                return new Sundae();
        }
        public void a(){
                System.out.println("ok");
        }
}
回复 使用道具 举报
new 是用来创建类对象的,你那是通过类中的方法获得对象  把new去掉就行了
public class test_001 {

        /**
         * @param args
         */
         

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                Sundae testSundae = Sundae.makeASundae();
                testSundae.a();
        }

}
class Sundae
{
        private Sundae()
        {
        }
        static Sundae makeASundae()
        {
                return new Sundae();
        }
        public void a(){
                System.out.println("ok");
        }
}
回复 使用道具 举报
Sundae.makeASundae();
本来就返回一个实例对象,你又new语法错误,把new删掉

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马