Tag: 覆盖

以编程方式覆盖log4j配置:FileAppender的文件位置

是否可以覆盖已在log4j.properties配置的appender的“File”属性而无需创建新的appender? 如果是这样 – 怎么样? 情况就是这样:我有两个分配器,A1是ConsoleAppender,A2是FileAppender。 A2的“文件”指向一般错误.log: log4j.appender.A2.File=error.csv 此appender仅记录错误级别事件或更糟 log4j.appender.A2.Threshold=error 。 现在我希望将这些错误写入不同的文件,具体取决于导致错误的类,因为有几个类正在创建实例。 能够快速查看哪个类创建了错误将会有很大的帮助,因为它更有用,然后浏览error.log来查找类标记。 所以我的想法是覆盖“File”属性,例如在这些新创建的类的构造函数中,因此它们将错误记录在不同的文件中。 非常感谢提前!

Java克隆抽象对象

我想知道是否有任何方法可以做到以下几点。 我有一个抽象类, Shape ,以及它的所有不同的子类,我想重写克隆方法。 我想在方法中做的就是从当前的toString()创建一个新的Shape 。 显然我不能做以下因为Shape是抽象的。 还有另一种方法可以做到这一点,因为在每个子类中重写克隆只是为了简单的名称更改似乎没用。 public abstract class Shape { public Shape(String str) { // Create object from string representation } public Shape clone() { // Need new way to do this return new Shape(this.toString()); } public String toString() { // Correctly overriden toString() } }

混淆“覆盖私有方法”

我对这段代码有两个问题 public class Override { private void f() { System.out.println(“private f()”); } public static void main(String[] args) { Override po = new Derived(); po.f(); } } class Derived extends Override { public void f() { System.out.println(“public f()”); } } /* * Output: private f() */// :~ 1)如何在Override po的引用上看到函数f; 2)为什么输出“private f()”

如何覆盖log4j中的日志文件?

我有一个日志文件,其中添加了以下appender: logger.addAppender(new FileAppender(new PatternLayout(),”log.txt”)); 问题是,每次我运行我的应用程序时,额外的日志记录信息都会附加到同一个日志文件中。 我每次都能覆盖文件怎么办?

Java如何调用盛大父母的方法?

可能重复: 为什么是super.super.method(); Java不允许? 假设我有3个A , B和C ,每个类都扩展了前一个。 如果B也实现myMethod如何从C.myMethod()调用A.myMethod()的代码? class A { public void myMethod() { // some stuff for A } } class B extends A { public void myMethod() { // some stuff for B //and than calling A stuff super.myMethod(); } } class C extends B { public void myMethod() { // some […]

Java – 内联类定义

我在Java中看到过几个类似的例子,我希望有人可以解释发生了什么。 看起来像一个新类可以内联定义,这对我来说似乎很奇怪。 第一个打印输出行是预期的,因为它只是toString。 然而第二个看起来像函数可以重写内联。 这有技术术语吗? 或者任何更深入的文档? 谢谢! 如果我有以下代码: public class Apple { public String toString() { return “original apple”; } } public class Driver { public static void main(String[] args) { System.out.println(“first: ” + new Apple()); System.out.println(“second: ” + new Apple() { public String toString() { return “modified apple”; } } ); } } 代码输出: […]

覆盖接口的变量?

当我从各种Java书籍和教程中读到时,在接口中声明的变量是常量,不能被覆盖。 我做了一个简单的代码来测试它 interface A_INTERFACE { int var=100; } class A_CLASS implements A_INTERFACE { int var=99; //test void printx() { System.out.println(“var = ” + var); } } class hello { public static void main(String[] args) { new A_CLASS().printx(); } } 它打印出var = 99 var被覆盖了吗? 我完全糊涂了。 谢谢你的任何建议! 非常感谢大家! 我对这个界面很新。 “影子”是理解这一点的关键词。 我查阅相关材料并立即理解。

没有调用TimePicker onTimeSet

我正在使用时间选择器让用户输入他所需的时间来执行特定任务,我正在使用支持库中提供的DialogFragment类,以便向后兼容较旧的Android版本。 以下是我创建TimePickerFragment类的代码,该类在单独的文件中创建,取自: http : //developer.android.com/guide/topics/ui/controls/pickers.html : package com.calls.only; import java.util.Calendar; import android.app.Dialog; import android.app.TimePickerDialog; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.widget.TimePicker; public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Use the current time as the default values for the picker final Calendar c = Calendar.getInstance(); int hour = c.get(Calendar.HOUR_OF_DAY); […]

实现Comparable,compareTo名称冲突:“具有相同的擦除,但不会覆盖其他”

我想有一个compareTo方法,它接受一个Real(一个用于处理任意大而精确的实数的类[好吧,只要它的长度小于2 ^ 31])和compareTo方法一个对象,但Java不让我,我没有足够的经验知道为什么。 我只是尝试修改类来实现Comparable,我在下面收到了这些错误消息。 我真的不明白错误信息是什么意思,但我知道它与我可怕的方式有关,我试图给我的课程一些灵活性,为我制作的每一种方法提供所有不同的方法签名,我可以解决它通过删除compareTo(Object other)方法,但我最好保留它。 所以我真正要问的是:有没有办法让这些错误消息消失而不删除compareTo(Object other)方法,这些错误究竟是什么意思? 另外,我知道已经有一些像BigInteger这样的内置Java类以及我正在尝试使用这个类的东西,但我正在为了与Project Euler( https://一起使用)的乐趣/满足感而这样做projecteuler.net/ )。 Jake@Jake-PC /cygdrive/c/Users/Jake/Documents/Java/Mathematics $ javac Real.java Real.java:377: error: name clash: compareTo(Real) in Real overrides a method whose erasure is the same as another method, yet neither overrides the other public int compareTo(Real other) ^ first method: compareTo(Object) in Real second method: compareTo(T) in Comparable […]

Javagenerics方法inheritance和覆盖规则

我有一个具有generics方法的抽象类,我想通过将特定类型替换为generics参数来覆盖generics方法。 所以在伪代码中我有以下内容: public abstract class GetAndParse { public SomeClass var; public abstract void getAndParse(T… args); } public class Implementor extends GetAndParse { // some field declarations // some method declarations @Override public void getAndParse(SpecificClass… args) { // method body making use of args } } 但由于某种原因,我不允许这样做? 我是在做某种语法错误还是这种inheritance和覆盖不允许? 特别是我收到关于@Override的错误,因为eclipse IDE一直在提醒我实现getAndParse 。 以下是我希望上述代码的工作方式。 我的代码中的其他地方有一个方法,它需要实现GetAndParse的对象实例,这特别意味着它们有一个我可以使用的getAndParse方法。 当我在该实例上调用getAndParse时,编译器会检查我是否以正确的方式使用了T特定实例,因此特别是T应该扩展AnotherClass并且它应该是SpecificClass 。