【java – 要写入文本文件的OutputStream子类】教程文章相关的互联网学习教程文章

java – 不可变的子类

我目前正在开发一个多线程框架.为避免副作用,我想要求framewok操纵的所有数据必须是不可变的. 那么Java中是否存在一种方式来指定我希望给定类的所有子类或实现给定接口的所有类都是不可变的?解决方法:我建议查看Mutability Detector.它执行静态分析以确定给定的类是否是不可变的.它可以用来添加类似于运行时断言的东西,即如果你传递了一个可变类的实例,你可以选择抛出异常.请注意,它可以在运行时分析实际的具体类,包括您定义的接口...

java – 使用Gson解析具有不同字段的子类【代码】

我正在解析具有类似于此的响应模板的数据:{response: {data: {}}meta: {errors: []success: 1} }对于每个特定响应,“数据”字段填充有动态字段,但所有其他键(元等)保持不变.例如: ClassA的data: {foo: "" }ClassB的data: {bar: 3 }如何建模我的类并使用Gson来表示这些数据?目前我有:public class BaseResponse {@SerializedName("meta") public Meta meta;public class Meta {@SerializedName("errors") public ArrayList<Erro...

java – 在子类和超类中都有相同的变量【代码】

在这个问题中,输出为Rose0.但是当我通过逻辑时,我觉得答案必须是Rose100而不是Rose0.编译器如何区分两个类中的i.由于Rosea延伸_39级,因此它也拥有超级I级.但是在第1行,如果我改变super.i然后我得到Rose100.这有何不同?class _39 {int i;_39(){i=100;foo();}public void foo(){System.out.println("Flower"+i);}} }public class Rosea extends _39{int i=200;Rosea(){ i=300;}public void foo(){System.out.println("Rose"+i);} //...

java – 如何限制迭代器只返回子类的实例?【代码】

我有一些实现可迭代的基类public class EntityCollection implements Iterable<Entity> {protected List<Entity> entities;public EntityCollection() {entities = new ArrayList<Entity>();}public Iterator<Entity> iterator() {return entities.iterator();}... etc这是子类.public class HeroCollection extends EntityCollection {public void doSomeThing() { ... }我想做以下事情:HeroCollection theParty = new HeroColle...

如何从java中的超类方法停止/退出子类方法执行【代码】

鉴于以下片段: 超级实施:@Overridepublic void onDone(String taskName, JSONObject receivedData, @Nullable HashMap<String, String> sentData) {//checks the status for all done process decides to call the presenter failed or successtry {boolean success = receivedData.getString("status").equals("success");if(!success){this.presenter.error(receivedData.getString("reason"));}}catch (JSONException ex){ex....

java – 从基类构造函数创建子类实例【代码】

我正在学习使用Java的OOP.假设我有一个基类Car,其子类扩展了Car,Engine,FuelTank和Wheels.是否可以从Car的基类中实例化这些扩展类,以便每个car实例都有自己的每个子类的实例?class Car{Car(){// instance of Engine// instance of Wheels// instance of FuelTank}}class CarPart{}class Engine extends CarPart{}class Wheels extends CarPart{}class FuelTank extends CarPart{}解决方法:你的问题是: 在类中,我可以创建其他类的...

在Java中如何引用子类变量而不在父类中声明该变量?【代码】

public class MyTest {public static void main(final String[] args) {B b = new B();b.print();} }class A {private final int x = 5;protected int getX() {return x;}public void print() {System.out.println(getX());} }class B extends A {private final int x = 10;@Overrideprotected int getX() {return x;}}在这个例子中,我需要在父类中打印子类值.它工作正常.没有任何问题.现在打印10.但我不想在父类A中定义该属性. 因...

Java:防止子类提供与基类不同的接口【代码】

有没有办法在编译时阻止子类公开除基类中定义的公共方法之外的公共方法? 例如:abstract public class AClass {abstract public void anAllowedMethod();}public class BClass extends Aclass {public void anAllowedMethod() {}public void anAdditionalNonAllowedMethod() {}private void thisMethodIsAllowedBecauseItsNotPublic() {}}也许我可以在AClass中使用一些关键字来声明子类只能实现在AClass中定义的方法(即“anAllowe...

如何使用子类或超类定义Java函数的返回类型和参数?【代码】

例如,如果我有类似的功能public List<E> sort(ArrayList<E> list) {...}我的同学告诉我,我们应该使用List作为返回类型,因为返回类型应该尽可能广泛.他的理由是,如果我们当前返回一个ArrayList,我们可以更改为返回LinkedList或其他类型.它增加了灵活性. 但是我们收到的函数参数应尽可能窄.这是因为我们可能需要在sort函数中使用一些只由ArrayList实现的函数. 所以我的问题是:是否有任何广泛接受的指南/最佳实践建议函数的形式参数应...

java – 转换为泛型类的通用子类型【代码】

假设我有这个:class Base<T> {}class Derived<T> extends Base<T> {}然后在我的代码中,我可以安全地投射而没有像这样的警告:public <T> void foo(Base<T> base) {Derived<T> f = (Derived<T>) base; // fine, no warning }这很好.但是如果派生类有更多的类型参数,它就不再起作用了:class Base<T> {}class Derived<T, U> extends Base<T> {}public <T> void foo(Base<T> base) {Derived<T, ?> f = (Derived<T, ?>) base; // unch...

java – 通用子类型和通配符如何在Collections.copy中工作?【代码】

这是Collections复制方法(部分):public static <T> void copy(List<? super T> dst, List<? extends T> src) {for (int i = 0; i < src.size(); i++) {dst.set(i, src.get(i));} }有4个样本电话:List<Object> objs = Arrays.<Object>asList(2, 3.14, "four"); List<Integer> ints = Arrays.asList(5, 6);1. Collections.copy(objs, ints); 2. Collections.<Object>copy(objs, ints); 3. Collections.<Number>copy(objs, ints); 4...

java – 抛出主要异常和子类型,有没有正确的方法?【代码】

好的,所以我在SO和程序员之间有一堆与异常相关的问题,但是有很多要问的问题,或者我不知道要输入什么,或者不是很多人问的. 所以,假设我有一个抛出FileNotFoundException(FNFE)的方法.然后我有另一个方法使用第一个,但也抛出IOException(IOE). 我的处理程序会同时捕获它们并对每个执行不同的操作,但是我的IDE(IntelliJ)发出信号,我已经在“抛出列表中有一个更普遍的例外,’java.io.IOException’”. 我知道如果我这样做会有效:publi...

Java泛型Enum子类型接口【代码】

鉴于以下设置:public class TestType {public static void main(String[] args) {List<Constants> list = new ArrayList<>();accept(list); //Does not compile}static void accept(Iterable<MyInterface> values) {for (MyInterface value : values) {value.doStuff();}} }interface MyInterface<T> {T doStuff(); }enum Constants implements MyInterface<Integer> {ONE, TWO, THREE;@Overridepublic Integer doStuff() {return...

Java反射 – 从子类和超类中获取字段【代码】

我正在为我的项目使用继承的bean类.这里有一些超级类是空的,子类可以有字段&一些子类将为空,超类可以有字段. 我的要求是从Sub类获取所有私有/公共字段以及从Super类获取所有公共/受保护字段. 下面我试图实现它.但我没能达到我的要求.请提供一些建议来实现这一目标.Field fields [] = obj.getClass().getSuperclass().getDeclaredFields();如果我使用上面的代码,我只能获得超类字段Field fields [] = obj.getClass().getFields();如...

java – JAXB编组声明父类与实际运行时子类【代码】

我正在使用JAXB编组一个具有声明为类Foo的实例变量的类.在运行时,实例变量被设置为Foo的子类的实例,让我们说FooBar.类Foo和FooBar上都有基本的JAXB注释. XML输出显示正在封送Foo的实例而不是FooBar.是否有一些特定的东西我需要做注释告诉JAXB如何正确编组运行时子类来代替声明的超类? 我尝试了一个实验,其中我直接编组了一个Foo类型的实例变量foo,它在运行时被设置为FooBar的一个实例.它正确编组了一个FooBar实例. 这与编组包含Fo...