Tag: 构造函数

替换实例化类的实现而不触及代码(java)

我有遗留的代码我不想碰。 public class LegacyCode{ public LegacyCode() { Service s = new ClassA(); s.getMessage(); } } ClassA提供CORBA服务调用的地方。 public class ClassA implements Service{ @Override public String getMessage() { // Make CORBA service call… return “Class A”; } } 界面Service看起来像; public interface Service { String getMessage(); } 出于测试目的,我想用存根替换Service的实现(在ClassA实现的LegacyCode )。 public class ClassB implements Service { @Override public String […]

如何横切注释的方法和构造函数?

这就是我正在做的事情: @Aspect public class MethodLogger { @Around(“(execution(* *(..)) || initialization(*.new(..))) && @annotation(Foo)”) public Object wrap(ProceedingJoinPoint point) throws Throwable { // works fine, but only for methods } } 该代码段工作正常,但仅适用于方法调用。 这是AspectJ maven插件在应用方面后所说的(不是在编译期间,它工作得很好): around on initialization not supported (compiler limitation) 任何解决方法? 我在使用OpenJDK 7: java version “1.7.0_05” Java(TM) SE Runtime Environment (build 1.7.0_05-b06) Java HotSpot(TM) 64-Bit Server VM […]

对super()的调用必须是构造函数体中的第一个语句

我正在编写一个LoginRequest类的构造函数,该类扩展了一个名为JsobObjectRequest的类(来自Android中的Volley框架,但这与问题完全无关) 使用此代码: public LoginRequest(String username, String password, Response.Listener responseListener, Response.ErrorListener errorListener) { Boolean hasCredentials=(username!=null && password!=null); int method=hasCredentials? Method.POST:Request.Method.GET; super(method, API_URL_LOGIN, null, responseListener, errorListener); this.username=username; this.password=password; } 我得到错误:调用super()必须是构造函数体中的第一个语句 相反,这段代码编译得很好: public LoginRequest(String username, String password, Response.Listener responseListener, Response.ErrorListener errorListener) { super((username!=null && password!=null)? Method.POST:Request.Method.GET, API_URL_LOGIN, null, responseListener, errorListener); this.username=username; this.password=password; } 但这不是有效的完全相同的事情吗? 在这两种情况下,在调用超级构造函数之前,根据传递给子类构造函数的参数值,进行几个简单的计算。 为什么编译器能够编译第一个例子,因为它可以编译第二个例子? call-super-constructor-must-first-statement语句规范是否比它需要的更简单,或者我错过了什么? 编辑 […]

构造函数中的exception

在C ++中,对象的生命周期在构造函数成功完成时开始。 在构造函数内部,该对象尚不存在。 问:从构造函数中发出exception是什么意思? 答:这意味着建筑已经失败,对象从未存在过,它的生命从未开始。 [ 来源 ] 我的问题是:Java也是如此吗? 例如,如果我把this交给另一个对象,然后我的构造函数失败了会发生什么? Foo() { Bar.remember(this); throw new IllegalStateException(); } 这个定义明确吗? Bar现在是否引用了非对象?

Xstream no-args构造函数错误

我试图创建一个’Transacao’实例时出现以下错误 `Error: Cannot construct br.com.cbmp.ecommerce.resposta.Transacao as it does not have a no-args constructor : Cannot construct br.com.cbmp.ecommerce.resposta.Transacao as it does not have a no-args constructor ` —- Debugging information —- message : Cannot construct br.com.cbmp.ecommerce.resposta.Transacao as it does not have a no-args constructor cause-exception : com.thoughtworks.xstream.converters.reflection.ObjectAccessException cause-message : Cannot construct br.com.cbmp.ecommerce.resposta.Transacao as it does not […]

如何解析’隐式超级构造函数classA()是不可见的。 必须显式调用另一个构造函数’?

我有一个类’ClassA’,它有私有构造函数。 public final class ClassA{ private ClassA{ } public static void main(String[] arg) }{ ; ; ; } } 现在,我正在扩展“ClassA”类[在执行此操作之前删除了最终关键字] public class ClassB extends ClassA{ public static void main(String[] arg) }{ ; ; ; } } 现在,我得到Implicit super constructor classA() is not visible. Must explicitly invoke another constructor Implicit super constructor classA() is not visible. […]

在Java中的子类中使用父构造函数

我有一个类“ChildClass”,它扩展了类“ParentClass”。 我想先调用父类的构造函数,然后再做一些额外的工作,而不是完全替换父类的构造函数。 我相信默认情况下会调用父类的0参数构造函数。 这不是我想要的。 我需要使用参数调用构造函数。 这可能吗? 我试过了 this = (ChildClass) (new ParentClass(someArgument)); 但这不起作用,因为你不能修改“这个”。

java构造函数有什么意义?

所以我正在学习java。 我已经进入了一个月,我刚刚学习了构造函数。 但我没有看到创造一个目的的全部目的。 我为什么以及何时想要使用它? 我完全了解它没有main方法,你可以从主类中调用构造函数。 任何人都可以在这个话题上给我启发,这对我有很大帮助。

Java构造函数引用赋值与新创建的对象赋值

我在代码中遇到了我们的项目: MyInterface var = MyClass::new; 有没有区别 MyInterface var = new MyClass(); 懒?

内部类中的构造函数(实现接口)

我将如何为实现接口的内部类编写构造函数? 我知道我可以创建一个全新的课程,但我认为必须有一种方法可以做到这一点: JButton b = new JButton(new AbstractAction() { public AbstractAction() { super(“This is a button”); } public void actionPerformed(ActionEvent e) { System.out.println(“button clicked”); } }); 当我输入它时,它不会将AbstractAction方法识别为构造函数(编译器要求返回类型)。 有没有人有想法?