java直接导入类_实现类或导入类java

在内部,Java是更好的,或者是最优的,还是标准的:用常量或使用点标记实现一个类?

例子:

选项1:

import com.myproject.Constantes;

public class myClass {

myClass() {

System.out.println("Math:" + Constantes.PI);

}

}

选项2:

import com.myproject.Constantes;

public class myClass implements Constantes {

myClass() {

System.out.println("Math:" + PI);

}

}

哪个更好,为什么?MVJ的使用,资源,速度?

programmers.stackexchange.com/questions/49572/…

一个也不是两个。我不喜欢这两种解决方案。有了这个,您就可以直接依赖于这个常量类了。将常量放到它们属于技术/功能的类中

运行时没有区别。

@很难控制,看起来那个班真的需要那个圆周率。那么,你将如何消除对你的3的依赖?

静态导入在几个方面都是最佳的。

实现一个接口以获取对常量的访问称为常量接口反模式。"反模式"这个名字表明这是一种不好的做法。

@在这个简单的示例中,我将以值的形式传递常量。我考虑过你的问题,是的,我的回答太简单了。但直到现在,我都记不起我应该在哪里上一门很好的恒流课。

@restive math.pi,或developer.android.com/reference/android/r.html等等;)。你是对的,只是太笼统了一点。

@RP,这是有争议的。它们在运行时没有优势,在编译时没有实际的优势(稍微缩短代码),它们使得很难找到常量所属的位置,并且根据LuigiedLCarno的答案,它们引入了一些微妙的问题。

@full.stack.ex类Math是一个围绕数学运算的实用程序类。所以我的论点"常量应该由它们的技术/函数类拥有"仍然适用。Swing API的类JFrame是另一个例子。作为对应项,您可以输入org.eclipse.swt.swt或您的android r类。所以我认为这主要是个人的决定,而我就像"大常数只有课程设计不好"。

如果Constantes纯粹是常量的集合(顾名思义),并且没有定义您需要在myClass中公开的功能,那么a)它不应该是interface,b)您不应该实现/扩展它。导入并使用它,如选项1所示。

实际上,我发现了一个只有常量变化的接口。不属于任何结构,不属于任何方法,只属于变量。就像抽屉里的灾难。我发现了一个实现该接口的类,但它的代码"constantes.name_constant"重复了100多次,我认为"更好地实现和替换所有重复的代码(constantes.name_constant)和不重复的代码(name_constant)"。

@用户1782602:这是你的决定。我不会,我会把Constantes.name_constant的用法留在代码中。一方面,它很好也很清楚,而且它并没有说类实现了一些它没有真正实现的东西。就JVM而言,我不认为它以这种或那种方式关心。

理解,必须尊重模型并充分利用类层次结构。这是误用,我同意你的做法。非常感谢你!

我认为应该使用选项1来避免错误地使用当前类中内部定义的另一个PI。

应该使用选项1,因为这将定义使用导入类中定义的常量。

如果在myclass中有一个名为pi的局部变量,选项2将使用该变量,而不是导入类中的变量。

通常,清晰度比性能更重要,这也不例外。

选项1优先于选项2,因为后者意味着myClass是一个Constantes,这没有意义。

自Java 5以来,你还有一个更好的选择。

import static com.myproject.Constantes.PI;

// OR

import static com.myproject.Constantes.*;

public class MyClass{

MyClass(){

System.out.println("Math:" + PI);

}

}

谢谢您!我已经完成了一个1.4项目:(恐怕我不能改变它,但我也在另一个1.5项目中尝试应用它,我不知道这是可以做到的。

Java 6的公共更新的结束已经扩展到FEB 2013,它毫无价值。如果你有机会更新,我会认真考虑Java 7而不是Java 5。

implements(接口,而不是类)表示myClass必须遵守Constantes指定的合同(通常带有一些必须在类中实现的方法规范)。

请检查面向对象编程(programaci_n orientada a objetos)概念,然后再了解任何给定语言的特殊性。

实际上,我发现了一个只有常量变化的接口。不属于任何结构,不属于任何方法,只属于变量。就像抽屉里的灾难。我发现了一个实现该接口的类,但它的代码"constantes.name_constant"重复了100多次,我认为"更好地实现和替换所有重复的代码(constantes.name_constant)和不重复的代码(name_constant)"。

好吧,我误解了你的问题。那么彼得·劳里的回答应该是正确的,就这样做吧。

不,你的回答是正确的。我完全理解并尝试应用它。我正在努力逐步改进这个项目,谢谢!:)

你在这里做了两件不同的事情。在第一个片段中,您只是编写引用Constantes类/接口中的内容的代码,因此需要使用import,而在第二个片段中,您声明您的代码必须符合Constantes接口,即实现其中的任何和所有方法。

干杯,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值